서버가 없는 이메일 전송 및 수신, CDK 방식

내가 보기에 서버를 이용하여 전자메일을 보내는 것은 결코 재미가 없는 것이 아니다.AWS는 이를 실현하기 위해 간단한 전자메일 서비스(SES)를 제공한다.그러나 사용자 인터페이스와 인프라 코드(IaC) 지원이 부족하다.설정을 수동으로 변경해야 하기 때문에 오류가 발생하기 쉽습니다.내가 최근에 자신을 위해 다른 로그인 페이지를 만들었을 때, 나는 이전 페이지와 같은 절차를 반복했다.왜 간단한 자동화가 나를 위해 이 일을 하지 않는지 나는 매우 괴롭다.이것이 바로 제가 오늘 여러분께 소개하고자 하는 내용입니다. 제 첫 번째 AWS CDK 구조는 이메일을 보내고 받는 데 사용됩니다.

You can find the source code of the AWS CDK Constructs in the ses-email-forwarding GitHub repository. Besides that, I also made ses-verify-identities available as separate AWS CDK Constructs.


AWS SES 설정 단계


당신은 자신의 도메인 이름으로 로그인 페이지를 만든 적이 있습니까?아니면 다른 별명으로 이메일을 받고 싶었나요?아니면 당신이 가지고 있는 도메인 이름에 전자 우편 주소를 사용하고 싶을 뿐입니다. 번거롭게 메일 서버를 설정하지 않고 기존의 우편함으로 메일을 전송하시겠습니까?만약 그렇다면, 나는 너에게 알려줄 좋은 소식이 좀 있다!😊
처음에, 나는 서버가 없는 전자 우편을 보내고 받는 데 사용되는 aws-lambda-ses-forwarder이라는 라이브러리를 사용했다.항상 다음 수동 단계를 따라야 합니다.
  • 은 AWS SES 및 verify my domain을 설정합니다.
  • 은 다른 e-메일 주소에 대해 receipt rules으로 구성됩니다.
  • 그리고 setup a Lambda function SES Action은 나의 모든 이메일을 SES에서 Gmail 주소로 전송합니다.

  • Configure SMTP for AWS SES, 내 인증 도메인을 사용하여 이메일을 보낼 Gmail을 설정합니다.
  • 다음 새로운 AWS CDK 구조는 AWS SES의 처음 세 가지 설정 단계를 자동으로 완료합니다.또한 SES에서 Route53을 사용하는 경우 이메일 주소나 도메인을 자동으로 확인할 수 있습니다.이러한 구조는 AWS CDK 스택에 배포하기만 하면 시작됩니다.AWS SES에 대한 SMTP 자격 증명을 만들고 Gmail(또는 다른 공급자) 설정을 사용하기만 하면 됩니다.어떻게 일하는지 보여주세요.⬇

    AWS CDK는 구조를 위해 제작되었습니다.


    작동 방식을 보여주는 가장 좋은 방법은 몇 줄의 코드를 보여주는 것입니다.
    new EmailForwardingRuleSet(this, 'EmailForwardingRuleSet', {
      enableRuleSet: true,
      emailForwardingProps: [{
        domainName: 'example.org',
        verifyDomain: true,
        fromPrefix: 'noreply',
        emailMappings: [{
          receivePrefix: 'hello',
          targetEmails: ['[email protected]']
        }]
      }]
    });
    
    코드는 EmailForwardingRuleSet 구조를 사용하여 모든 내용을 설정합니다.가장 중요한 사항은 다음과 같습니다.
  • AWS SES에서만 활성 규칙 세트를 활성화하도록 구성할 수 있습니다.
  • 은 도메인 이름과 전자 메일 매핑을 지정하여 전자 메일 전달 규칙을 정의합니다.전자 우편 맵은 receivePrefix을 정의합니다. 전자 우편의 별명과 targetEmails의 목록입니다.별칭/접두어로 보낸 모든 전자 메일이 대상 전자 메일로 전달됩니다.전달된 e-메일의 접두어는 [email protected]입니다.
  • 도메인을 Route53에서 관리하는 경우 도메인을 자동으로 확인할 수 있습니다.이 설정은 도메인을 검증하기 위해 사용자 정의 자원을 설정합니다.
  • 됐어.물론, 당신은 설정을 더욱 확장할 수 있습니다.예를 들어, 각종 별명/접두사에 더 많은 전자 우편 맵을 추가할 수 있습니다.또는 별도의 전자 메일 매핑이 있는 다른 도메인을 추가할 수 있습니다.이것은 너에게 달려 있다👍

    AWS CDK 스택 배포


    이제 AWS CDK 스택에 모든 컨텐츠를 넣으면 됩니다.시작하기 전에 새 CDK 스택을 초기화하고 내 CDK 구조를 설치합니다.
    cdk init app --language=typescript
    npm i -D @seeebiii/ses-email-forwarding
    
    그런 다음 스택을 포함하는 새 파일을 만듭니다.예를 들면 다음과 같습니다.
    const app = new cdk.App();
    
    class EmailForwardingSetupStack extends cdk.Stack {
      constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
        super(scope, id, props);
    
        new EmailForwardingRuleSet(this, 'EmailForwardingRuleSet', {
          // define your config here
        });
      }
    }
    
    new EmailForwardingSetupStack(app, 'EmailForwardingSetupStack', {
      env: {
        account: '<account-id>',
        region: '<region>'
      }
    });
    
    마지막으로 cdk deploy 명령을 사용하여 창고를 배치합니다.도메인 이름 검증과 SES 설정 등 다른 모든 것이 당신을 위해 완성될 것입니다.이제 너는 서버가 없는 전자메일을 받는 것부터 시작할 수 있다.
    마지막으로 AWS SES를 사용하여 이메일을 받는 서버 아키텍처가 없습니다.

    모두 1.)받은 e-메일은 SES에서 처리합니다.SES는 2.)S3로 이동한 다음 3으로 이동합니다.)Lambda 함수를 호출합니다.Lambda 함수 4입니다.)S3 및 5에서 e-메일을 로드합니다.)Gmail 또는 다른 대상 e-메일 주소로 전달합니다.만약 네가 흥미가 있다면, 나는 include AWS Lambda functions inside a CDK construct을 어떻게 실현하는지에 관한 또 다른 블로그 글을 썼다.

    AWS SES를 사용하여 이메일 보내기


    불행히도 자동화할 수 없는 남은 절차다.위의 CDK 스택을 AWS 계정에 배포하려면 create SMTP credentials in AWS SES이 필요합니다.이러한 자격 증명을 사용하면 모든 e-메일 애플리케이션이나 Gmail 등의 공급업체에서 e-메일을 보낼 수 있습니다.그러나 AWS SES에서 보낸 사람의 도메인을 확인한 경우에만 유효합니다.그렇지 않으면 AWS SES를 통해 스팸메일을 보내지 않도록 이메일이 인증된 이메일 주소로만 전송됩니다.CDK 구성 검증 대상 e-메일 주소를 사용하려면 설정 verifyTargetEmailAddresses을 사용하십시오.

    기타 솔루션


    너는 아마도 이미 자신에게 이 문제가 정말 다른 해결 방안이 없는지 물었을 것이다.서버 없이 이메일을 보내고 받을 수 있는 다른 해결 방안도 있다는 것을 보증합니다.그러나 그것들은 내가 예상한 대로 나의 문제를 해결하지 않았거나, 나는 그것들이 너무 늦었다는 것을 발견했다.다음과 같은 몇 가지 대안이 있습니다.

  • aws-lambda-ses-forwarder-> Lambda 함수에 사용되는 NPM 패키지입니다.SES 이벤트를 트리거하여 Gmail과 같은 전자 메일로 전달할 수 있습니다.불행하게도 Lambda 함수에서만 이 라이브러리를 사용하려면 필요한 모든 절차를 수동으로 설정해야 합니다.또한 e-메일을 전달할 수 있도록 매우 유연한 구성을 제공합니다.

  • aws-cfn-ses-domain->CloudFormation은 도메인 및 이메일 인증을 위한 사용자 지정 리소스입니다.클라우드 포메이션에서 인프라를 작성하면 도움이 되지만, 일반적인 전자 우편 처리와 같은 다른 부분이 부족합니다.

  • S3 Email->S3과 SE의 조합으로 전자메일은 S3에 저장되고 S3는'이메일 인터페이스'로 사용된다.

  • simplelogin.io-> 다양한 이메일 별칭을 설정하는 SaaS 어플리케이션deploy it yourself on AWS을 사용하여 스택을 SES에 연결할 수도 있습니다.이것은 아마도 내가 위에서 언급한 사용자 사례를 해결하는 가장 우호적인 방식일 것이다.그러나 나는 단지 대부분의 일을 실현한 후에야 그것을 발견했다.이 밖에 위탁 관리 절차는 너무 많은 일을 해야 할 것 같다.

  • improvmx.com-> SaaS 어플리케이션과 유사합니다.이오.이것은 전자 우편 별명을 만들고 전자 우편을 Gmail 등 다른 주소로 전송할 수 있습니다.이것은 제 CDK 구조가 당신에게 제공할 수 있는 기능과 매우 비슷합니다.다른 것과 마찬가지로, 나는 대부분의 것을 실현한 후에야 이 해결 방안을 발견했다.불행히도, 내가 아는 바에 의하면, 아직 위탁 관리 버전이 없다.
  • 결론


    제 첫 AWS CDK 구조를 구축하는 과정에서 많은 것을 배웠습니다!까다로운 부분은 bundle a Lambda function inside the AWS CDK Construct입니다.나는 새로운 로그인 페이지나 다른 전자메일 별명의 설정을 쉽게 확장할 수 있기 때문에 결과에 매우 만족한다.당신은 나의 해결 방안이 어떻다고 생각합니까?아래의 평론에서 저에게 알려주시거나 인터넷에서 저를 언급해 주십시오!
    Serverless Sending and Receiving E-Mails, the CDK Way우편》은 가장 먼저 Sebastian Hesse - Software Engineer에 발표되었다.

    좋은 웹페이지 즐겨찾기