AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Lambda와 Amazon SES를 사용하여 이메일을 보내려면 어떻게 해야 합니까?
AWS Lambda를 사용하여 Amazon Simple Email Service(Amazon SES)를 통해 이메일을 보내려고 합니다.
간략한 설명
Lambda 및 Amazon SES를 사용하여 이메일을 전송하려면 다음 단계를 완료하십시오.
- Lambda에서 API 호출을 실행할 AWS Identity and Access Management(IAM) 정책 및 역할을 만듭니다.
- Amazon SES ID(도메인 또는 이메일 주소)를 확인합니다.
- Amazon SES를 통해 이메일을 보내는 논리가 포함된 Lambda 함수를 생성하거나 업데이트합니다.
참고: 이메일에 PDF 첨부 파일을 포함하려면 Amazon SES SendRawEmail API를 사용해야 합니다.
해결 방법
IAM 정책을 만들고 Lambda가 API 호출을 실행할 수 있도록 역할에 연결
다음 단계를 완료합니다.
-
IAM 콘솔을 엽니다.
-
JSON 정책 편집기를 사용하여 IAM 정책을 만듭니다. 정책을 만들 때 다음 JSON 정책 문서를 정책 편집기에 붙여 넣습니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ses:SendEmail", "ses:SendRawEmail" ], "Resource": "*" } ] }참고: 이 정책에 대한 액세스를 제한하는 자세한 방법과 예시는 SES의 IAM 정책 예시를 참조하십시오.
-
IAM 역할에 IAM 정책을 연결합니다.
Amazon SES ID 확인
도메인을 확인하려면 DNS 공급자로 DKIM 도메인 ID 확인을 참조하십시오.
이메일 주소를 확인하려면 이메일 주소 ID 확인을 참조하십시오.
이메일을 보내는 로직이 포함된 Lambda 함수 만들기 또는 업데이트
다음 Node.js, Python 및 Ruby Lambda 함수 코드 예시에서 필요한 경우 환경에 맞춰 이러한 변수를 바꾸십시오.
- us-west-2를 확인된 Amazon SES ID가 있는 AWS 리전으로 바꿉니다.
- **"RecipientEmailAddress", ...**를 이메일을 보내려는 이메일 주소로 바꿉니다.
- SourceEmailAddress를 Amazon SES에서 확인된 발신자 이메일 주소 또는 Amazon SES에서 확인된 도메인의 이메일 주소로 바꿉니다. 필요에 따라 메시지 본문("Test")과 제목 줄("Test Email")을 편집합니다.
참고: 선호하는 지원 런타임에서 Lambda 함수 코드를 직접 설계할 수도 있습니다.
다음 단계를 완료합니다.
-
Lambda 콘솔을 열고, 함수를 선택합니다.
-
아직 만들지 않은 경우 Lambda 함수를 만듭니다.
참고: Lambda 콘솔을 사용하거나 배포 패키지를 빌드하고 업로드할 수 있습니다. -
함수 이름을 선택하고, 구성 탭을 선택합니다.
-
권한 창에서 함수의 실행 역할을 검토합니다.
-
이전에 생성한 Amazon SES 권한이 있는 IAM 역할이 나열되는지 확인합니다. 올바른 IAM 역할이 목록에 없으면 함수에 올바른 역할을 할당합니다.
-
코드 탭을 선택합니다. 내장 코드 편집기에서 다음 함수 코드 예시 중 하나를 붙여넣습니다.
Node.js 버전 18 이상 코드 예시:// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { SESClient, SendEmailCommand } from "@aws-sdk/client-ses"; const ses = new SESClient({ region: "us-west-2" }); export const handler = async(event) => { const command = new SendEmailCommand({ Destination: { ToAddresses: ["RecipientEmailAddress", ...], }, Message: { Body: { Text: { Data: "Test" }, }, Subject: { Data: "Test Email" }, }, Source: "SourceEmailAddress", }); try { let response = await ses.send(command); // process data. return response; } catch (error) { // error handling. } finally { // finally. } };Node.js 버전 16 이하 코드 예시:
// 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 = async function (event) { var params = { Destination: { ToAddresses: ["RecipientEmailAddress", ...], }, Message: { Body: { Text: { Data: "Test" }, }, Subject: { Data: "Test Email" }, }, Source: "SourceEmailAddress", }; return ses.sendEmail(params).promise() };Python 버전 3.9 코드 예시:
import json import boto3 client = boto3.client('ses', region_name='us-west-2') def lambda_handler(event, context): response = client.send_email( Destination={ 'ToAddresses': ['RecipientEmailAddress'] }, Message={ 'Body': { 'Text': { 'Charset': 'UTF-8', 'Data': 'This is the message body in text format.', } }, 'Subject': { 'Charset': 'UTF-8', 'Data': 'Test email', }, }, Source='SourceEmailAddress' ) print(response) return { 'statusCode': 200, 'body': json.dumps("Email Sent Successfully. MessageId is: " + response['MessageId']) }Ruby 버전 2.7 코드 예시:
require "aws-sdk-ses" $ses = Aws::SES::Client.new(region: "us-west-2") def lambda_handler(event:, context:) resp = $ses.send_email({ destination: { to_addresses: ["RecipientEmailAddress"], }, message: { body: { text: { charset: "UTF-8", data: "This is the message body in text format.", }, }, subject: { charset: "UTF-8", data: "Test email", }, }, source: "SourceEmailAddress" }) { statusCode: 200, body: JSON.generate("Message Sent Successfully. #{resp.to_h} ") } end -
배포를 선택합니다.
(선택 사항) 테스트 이메일 보내기
다음 단계를 완료합니다.
- Lambda 콘솔을 열고, 함수를 선택합니다.
- 함수의 테스트 이벤트를 구성합니다.
참고: 테스트 페이로드는 필수이지만 이 코드 예시에는 사용되지 않습니다. - 테스트를 선택합니다. Lambda는 Amazon SES를 사용하여 수신자에게 테스트 이메일을 보냅니다.
관련 정보
관련 콘텐츠
질문됨 2년 전

