AWS Lambda, API Gateway 및 SES를 사용하는 서버리스 문의 양식
AWS Lambda, API Gateway 및 SES를 사용하여 이메일 문의 양식을 설정하는 방법.
how to build a CI/CD pipeline for your website using GitLab에 대한 내 마지막 기사를 읽었거나 S3 버킷에 연락처 양식을 추가하려는 웹 사이트 또는 애플리케이션이 있을 수 있습니다. 어느 쪽이든 제대로 찾아오셨습니다. 오늘은 Lambda, API Gateway 및 SES를 사용하여 이 신뢰할 수 있는 문의 양식을 설정하는 방법을 보여 드리겠습니다(쉽습니다).
댄, 요점이 뭐야?
Apache, PHP 등을 사용하는 서버에 기존 웹 사이트가 있는 경우 Postfix와 같은 이메일 서비스를 설정하면 PHP's
mail()
기능을 사용할 수 있습니다. 나처럼 버킷에서 웹 사이트를 제공하는 경우 정확히 Postfix를 사용할 수 없습니다(또 다른 서버의 가용성에 대해 걱정해야 하기 때문에 정말 원하지도 않습니다). 그럴 때 이 서비스 조합이 유용합니다!전제 조건
이에 대한 전제 조건이 너무 많지는 않습니다(특히 지난 튜토리얼을 진행한 경우).
Terraform이 설치됨
따라서 3번의 경우 누군가가 연락처 양식을 작성할 때 이메일을 보내려면 이 서비스를 사용해야 하기 때문에 설정이 필요합니다. 초간단이라 안넘어가겠지만 부득이 하시면 here's the AWS documentation that you can check out .
인프라
이 작업을 직접 수행하는 방법을 살펴보았지만using this guide, 항상 Terraform을 사용하여 인프라를 재생성하려고 노력하므로 다시 필요할 때 동일한 작업을 실행하기 위해 작성한 모듈을 신속하게 사용할 수 있습니다... 운 좋게도 해당 가이드를 거칠 필요가 없습니다! module I wrote 을 사용하면 됩니다.
계속해서 Terraform 프로젝트 디렉토리에
main.tf
파일을 생성하십시오. 다음과 같이 만들어 보겠습니다.provider "aws" {
region = "us-east-1"
}
module "las" {
source = "git::https://gitlab.com/nextlink/lambda-api-sendmail.git?ref=v1.0"
role_name = "las_role"
function_name = "lambda-function-name"
billing_tag = "las"
api_gateway_name = "las"
api_gateway_description = "API gateway for las"
}
이것이 인프라를 구축하기 위해 작성해야 하는 모든 코드입니다. 당신은 믿을 수 있습니까? 모듈은 우리의 삶을 더 쉽게 만들기 위해 배후에서 많은 작업을 수행하고 있습니다. 이러한 변수를 필요로 하거나 원하는 대로 자유롭게 변경하십시오.
이 Terraform 구성 외에도 몇 가지 작업을 더 수행해야 합니다. Lambda 함수는
exports.js
라는 파일로 정의됩니다. 사본이 있습니다here. 소스 코드를 복사하고 exports.js
라는 작업 디렉토리에 새 파일을 만들어야 합니다. 그래도 약간의 작업을 수행해야 합니다. 해당 파일의 4행과 5행은 다음과 같습니다.var RECEIVER = "[email protected]"
var SENDER = "[email protected]"
RECEIVER
변수를 연락처 양식을 수신할 이메일로 변경하고 SENDER
를 이메일을 보내려는 이메일로 변경해야 합니다. 이것이 AWS가 우리 도메인에서 우리에게 이메일을 보낼 수 있도록 SES를 일찍 설정한 이유입니다.모든 작업이 끝나면 해야 할 작업이 하나 더 있습니다. 다음 명령을 사용하여 내보내기 파일을 압축해야 합니다.
zip exports.js.zip exports.js
완료되면 구성을 실행하는 일만 남았습니다.
terraform apply
대박! 인프라가 모두 설정되었습니다!
인프라 사용
웹사이트/앱에서 사용하는 프레임워크에 따라 방법이 달라지기 때문에 HTML 및 JS 측면에 대해서는 자세히 다루지 않겠습니다. 하지만 메시지를 보내려면 어떤 엔드포인트를 호출해야 하는지 보여드리고 싶습니다.
해당 이미지의
Invoke URL
는 완성된 양식을 게시할 것입니다. 양식의 유일한 규정(Terraform 구성에서 사용한 exports.js
파일로 인해)은 JSON 데이터를 다음 필드와 함께 해당 URL에 게시한다는 것입니다.{
"name": "",
"email": "",
"message": ""
}
해당 필드가 원하는 것이 아닌 경우
exports.js
파일에서 다시 변경하고 압축한 다음 Terraform 구성을 다시 실행할 수 있습니다.그리고 그게 다야
이 짧은 Terraform 구성과 약간의 HTML/JavaScript 마법으로 사용자가 연락할 수 있도록 항상 사용 가능한(사용 비용이 정말 저렴함) 엔드포인트가 있습니다! 이 방법은 타사 유료 솔루션에 대한 훌륭한 대안이며 사용자 정의할 여지가 많습니다. 이 예제가 향후 작업에 유용할 수 있기를 바랍니다.
이 게시물은 devops 및 devops consulting services 에 대해 작성하는 블로그에 처음 나타났습니다.
Reference
이 문제에 관하여(AWS Lambda, API Gateway 및 SES를 사용하는 서버리스 문의 양식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/danielslapelis/serverless-contact-form-using-aws-lambda-api-gateway-and-ses-3b94텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)