AWS Lambda, API Gateway 및 SES를 사용하는 서버리스 문의 양식

6457 단어 apidevopsawslambda

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를 사용할 수 없습니다(또 다른 서버의 가용성에 대해 걱정해야 하기 때문에 정말 원하지도 않습니다). 그럴 때 이 서비스 조합이 유용합니다!

전제 조건



이에 대한 전제 조건이 너무 많지는 않습니다(특히 지난 튜토리얼을 진행한 경우).
  • AWS 계좌

  • Terraform이 설치됨
  • 단순 이메일 서비스가 도메인 또는 이메일 계정에 대해 AWS에서 구성됨

  • 따라서 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 마법으로 사용자가 연락할 수 있도록 항상 사용 가능한(사용 비용이 정말 저렴함) 엔드포인트가 있습니다! 이 방법은 타사 유료 솔루션에 대한 훌륭한 대안이며 사용자 정의할 여지가 많습니다. 이 예제가 향후 작업에 유용할 수 있기를 바랍니다.

    이 게시물은 devopsdevops consulting services 에 대해 작성하는 블로그에 처음 나타났습니다.

    좋은 웹페이지 즐겨찾기