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 メールを受信者に送信します


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?