Lambda 및 Amazon SES를 사용하여 이메일을 전송하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 11월 6일

Amazon Simple Email Service(Amazon SES)를 통해 이메일을 전송하는 데 AWS Lambda를 사용하고 싶습니다. 그렇게 구성하려면 어떻게 해야 합니까?

간략한 설명

Amazon SES를 사용하여 Lambda에서 이메일을 전송하려면 다음이 필요합니다.

참고: 이 문서에서는 Node.js의 예제 Lambda 함수 코드가 원래 형태 그대로 제공됩니다. 예제를 사용 사례에 적용하거나 원하는 프로그래밍 언어를 사용하여 자체적으로 설계합니다.

​해결 방법

IAM 정책 및 실행 역할 생성

1.    JSON 정책 편집기를 사용하여 IAM 정책을 생성합니다. 이 JSON 정책 문서를 정책 편집기에 붙여넣습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": "*"
        }
    ]
}

참고: IAM 정책에 대한 액세스를 제한하는 방법을 포함하여 자세한 내용은 Amazon SES에 대한 IAM 정책 예제를 참조하십시오.

2.    Lambda 함수에 지정하려는 IAM 역할에 IAM 정책을 연결합니다.

자세한 단계는 IAM 자격 증명 권한(콘솔) 추가를 참조하십시오. 그런 다음 자격 증명(콘솔)에 대한 권한 정책으로 관리형 정책을 사용하려면의 지침을 따릅니다.

Amazon SES 자격 증명 확인

Amazon SES 메시지를 전송하려는 Amazon SES 자격 증명(도메인 또는 이메일 주소)을 확인합니다.

Lambda 함수 생성 또는 업데이트

아직 수행하지 않았으면 Lambda 콘솔을 사용하거나 자체 배포 패키지를 구축 및 업로드하여 Lambda 함수를 생성합니다.

1.    Lambda 콘솔의 왼쪽 탐색 창에서 [함수]를 선택합니다.

2.    함수 이름을 선택합니다.

3.    [구성] 창의 [실행 역할]에서 Amazon SES 권한이 포함된 IAM 역할이 함수에 할당되었는지 확인합니다.

4.    편집기 창의 [Function code]에 다음 예제 함수 코드를 붙여넣습니다.

참고: us-west-2를 확인된 Amazon SES 자격 증명의 AWS 리전으로 바꿉니다. recipientEmailAddress를 이메일을 전송할 이메일 주소로 바꿉니다. (계정이 확인된 Amazon SES 자격 증명의 리전에 있는 Amazon SES 샌드박스 환경에 있는 경우 recipientEmailAddress를 동일한 계정 및 리전의 Amazon SES 확인 이메일 주소로 변경해야 합니다.) sourceEmailAddress를 Amazon SES 확인 발신자 이메일 주소 또는 Amazon SES 확인 도메인의 이메일 주소로 바꿉니다. 선택적으로 메시지 본문("Test") 및 제목("Test Email")을 원하는 대로 편집합니다.

// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

var aws = require('aws-sdk');
var ses = new aws.SES({region: 'us-west-2'});

exports.handler = (event, context, callback) => {
    
     var params = {
        Destination: {
            ToAddresses: ["recipientEmailAddress"]
        },
        Message: {
            Body: {
                Text: { Data: "Test"
                    
                }
                
            },
            
            Subject: { Data: "Test Email"
                
            }
        },
        Source: "sourceEmailAddress"
    };

    
     ses.sendEmail(params, function (err, data) {
        callback(null, {err: err, data: data});
        if (err) {
            console.log(err);
            context.fail(err);
        } else {
            
            console.log(data);
            context.succeed(event);
        }
    });
};

참고: us-west-2를 확인된 Amazon SES 자격 증명의 리전으로 변경하지 않으면 "Email address is not verified"라는 오류 메시지와 "MessageRejected"라는 오류 코드가 나타납니다. Amazon SES가 지원되지 않는 리전에서 Lambda 함수를 실행하면 "Inaccessible host"라는 오류 메시지와 "UnknownEndpoint" 라는 오류 코드가 표시됩니다.

sendEmail API 사용에 대한 자세한 내용은 AWS SDK for JavaScript 설명서를 참조하십시오.

5.    [저장]을 선택합니다.

테스트 이메일 전송

1.    Lambda 콘솔에서 함수의 테스트 이벤트를 구성합니다.

참고: 테스트 페이로드가 필요하지만 이 코드 예제에서는 사용하지 않습니다.

2.    [테스트]를 선택합니다. Lambda는 Amazon SES를 사용하여 수신자에게 테스트 이메일을 전송합니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?