Lambda と Amazon SES を使用して E メールを送信するにはどうすればよいですか?
最終更新日: 2021 年 9 月 15 日
Amazon Simple Email Service (Amazon SES) を使用して E メールを送信するために AWS Lambda を使用したいと考えています。どのように設定すればよいか教えてください。
簡単な説明
Amazon SES を使用して Lambda 関数から E メールを送信するには、次の手順を実行します。
1. Lambda が API コールを実行するための AWS Identity and Access Management (IAM) ポリシーと実行ロールを作成します。
2. Amazon SES のアイデンティティ (ドメインまたは E メールアドレス) を確認します。
3. Amazon SES を介して E メールを送信するためのロジックを含む Lambda 関数を作成または更新します。
注: E メールに PDF の添付ファイルを含めるには、Amazon SES SendRawEmail API オペレーションを使用する必要があります。詳細については、Sending raw email using the Amazon SES API を参照してください。
解決方法
注: この記事の Node.js Lambda 関数コードの例は、そのまま提供されています。例をユースケースに合わせて調整するか、任意のプログラミング言語で自分自身でコードを設計してください。
Lambda で API コールを実行するための IAM ポリシーと実行ロールを作成する
1. JSON ポリシーエディターを使い IAM ポリシーを作成します。ポリシーを作成するときに、以下の JSON ポリシードキュメントをポリシーエディタに貼り付けます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "*"
}
]
}
注: このポリシーへのアクセスを制限する方法の詳細と例については、Amazon SES の IAM ポリシーの例を参照してください。
2. IAM ロールに IAM ポリシーをアタッチします。手順については、IAM アイデンティティ許可の追加 (コンソール) のマネージドポリシーをアイデンティティの許可ポリシーとして使用するには (コンソール) のセクションを参照してください。
注: この IAM ロールは、次の手順で Lambda 関数に割り当てます。
Amazon SES のアイデンティティ (ドメインまたは E メールアドレス) を確認する
ドメインを検証するには、Amazon SES でのドメインの検証を参照してください。
E メールアドレスを検証するには、Verifying email addresses in Amazon SES を参照してください。
Amazon SES を介して E メールを送信するためのロジックを含む Lambda 関数を作成または更新する
1. まだ作成していない場合は、Lambda 関数を作成します。
注: Lambda コンソールを使用するか、デプロイパッケージをビルドおよびアップロードして、Lambda 関数を作成できます。
2. Lambda コンソールの左側のナビゲーションペインで、[Functions] (関数) を選択します。
3. 関数の名前を選択します。
4. [Configuration] (設定) タブの [Permissions] (許可) ペインで、関数の [Execution Role] (実行ロール) を確認します。前に作成した Amazon SES 許可を持つ IAM ロールがリストされていることを確認します。正しい IAM ロールがリストされていない場合は、関数に正しいロールを割り当てます。
5. [Function code] (関数コード) の下のエディタペインに、以下のサンプル関数コードを貼り付けます。
重要: us-west-2 を検証済みの Amazon SES アイデンティティがある AWS リージョンに置き換えます。"RecipientEmailAddress", ... を E メールの送信先とする E メールアドレスまたはアドレスに置き換えます。SourceEmailAddress を、Amazon SES 検証済み送信者の E メールアドレスまたは Amazon SES 検証済みドメインの E メールアドレスに置き換えます。必要に応じて、メッセージ本文 (「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 = async function (event) {
var params = {
Destination: {
ToAddresses: ["RecipientEmailAddress", ...],
},
Message: {
Body: {
Text: { Data: "Test" },
},
Subject: { Data: "Test Email" },
},
Source: "SourceEmailAddress",
};
return ses.sendEmail(params).promise()
};
sendEmail API の使用の詳細については、AWS SDK for JavaScript documentation を参照してください。
5. [Deploy] (デプロイ) を選択します。
(オプション) テストメールを送信する
1. Lambda コンソールで、関数用のテストイベントを設定します。
注: テストペイロードは必須ですが、このコード例には使用されていません。
2. [テスト] を選択します。Lambda は Amazon SES を使用してテスト E メールを受信者に送信します