Amazon SES アカウントの E メール送信を自動的に一時停止する - Amazon Simple Email Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SES アカウントの E メール送信を自動的に一時停止する

このセクションの手順では、単一のAWS地域で Amazon SES アカウントの E メール送信を自動的に一時停止するように Amazon SES、Amazon SNS、Amazon CloudWatch、 AWS Lambdaを設定するためのステップを説明します。複数のリージョンから E メールを送信する場合は、このソリューションを実装するリージョンごとにこのセクションの手順を繰り返します。

パート 1: IAM ロールの作成

E メール送信の自動一時停止を設定するための最初のステップは、UpdateAccountSendingEnabled API オペレーションを実行できる IAM ロール を作成することです。

IAM ロールを作成するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [Roles (ロール) ] を選択します。

  3. [ロールの作成] を選択します。

  4. [信頼されたエンティティを選択] ページで、[信頼されたエンティティタイプ] の [AWS のサービス] を選択します。

  5. [Use case] (ユースケース) で、Lambda を選択し、[Next] (次へ) を選択します。

  6. [Add permissions] (アクセス許可を追加) ページで、次のポリシーを選択します。

    • AWSLambdaBasicExecutionRole

    • AmazonSESFullAccess

    ヒント

    [Permission policies] (アクセス許可ポリシー) の下にある検索ボックスを使用して、これらのポリシーをすばやく特定します。ただし、最初のポリシーを検索して選択した後、2 番目のポリシーを検索して選択する前に、[Clear filters] (フィルターをクリア) を選択する必要があります。

    続いて、[Next] (次へ) を選択します。

  7. [Name, review, and create] (名前、確認、および作成) ページの [Role details] (ロールの詳細) の下にある [Role name] (ロール名) フィールドに、意味のあるポリシーの名前を入力します。

  8. 選択した 2 つのポリシーが、[Permissions policy summary] (アクセス許可ポリシーの概要) テーブルに表示されていることを確認して、[Create role] (ロールの作成) を選択します。

パート 2: Lambda 関数を作成する

IAM ロールを作成した後で、Lambda 関数を作成して、アカウントの E メール送信を一時停止することができます。

Lambda 関数を作成するには
  1. AWS Lambda コンソール (https://console.aws.amazon.com/lambda/) を開きます。

  2. リージョンセレクターを使用して、この Lambda 関数をデプロイするリージョンを選択します。

    注記

    この関数では、このステップで選択した AWS リージョン内の E メール送信を一時停止します。複数のリージョンから E メールを送信する場合は、E メール送信を自動的に一時停止するリージョンごとにこのセクションの手順を繰り返します。

  3. [Create function] を選択します。

  4. [Create function] で [Author from scratch] を選択します。

  5. [Basic information] (基本的な情報) ページで、以下のステップを完了します。

    • [Function name] (関数名) に Lambda 関数の名前を入力します。

    • [ランタイム] で、[Node.js 18x] (または、現在選択リストで提供されているバージョン) を選択します。

    • [Architecture] (アーキテクチャ) で、事前に選択されたデフォルト、x86_64 を保持します。

    • アクセス許可で、[Change default execution role] (デフォルト実行ロールの変更) を拡張し、[Use an existing role] (既存のロールを使用) を選択します。

    • [Existing role] (既存のロール) リストボックスで、パート 1: IAM ロールの作成 で作成した IAM ロールを選択します。

    次に、[Create function] を選択します。

  6. コードエディタの [Code source] (コードソース) に、以下のコードを貼り付けます。

    'use strict'; const { SES } = require("@aws-sdk/client-ses") // Create a new SES object. var ses = new SES({}); // Specify the parameters for this operation. In this case, there is only one // parameter to pass: the Enabled parameter, with a value of false // (Enabled = false disables email sending, Enabled = true enables it). var params = { Enabled: false }; exports.handler = (event, context, callback) => { // Pause sending for your entire SES account ses.updateAccountSendingEnabled(params, function(err, data) { if(err) { console.log(err.message); } else { console.log(data); } }); };

    その後、[デプロイ] を選択します。

  7. [テスト] を選択します。[Configure test event] (テストイベントの設定) ウィンドウが表示されたら、[Event name] (イベント名) フィールドに名前を入力し、[Save] (保存) を選択します。

  8. [Test] (テスト) ドロップボックスを拡張し、作成したイベントの名前を選択してから、[Test] (テスト) を選択します。

  9. そのすぐ下に、[Execution results] (実行結果) タブが表示されます。右に Status: Succeeded が表示されていることを確認します。関数の実行に失敗した場合は、次のことを実行します。

    • パート 1: IAM ロールの作成 で作成した IAM ロールに正しいポリシーが含まれていることを確認します。

    • Lambda 関数のコードにエラーがないことを確認します。Lambda コードエディタでは、構文エラーやその他の潜在的な問題が自動的にハイライトされます。

パート 3: アカウントの E メール送信の再有効化

パート 2: Lambda 関数を作成する で Lambda 関数のテストをする副作用は、Amazon SES アカウントの E メール送信が一時停止していることです。ほとんどの場合は、CloudWatch アラームがトリガーされるまで、アカウントの送信を一時停止しません。

このセクションの手順では、Amazon SES アカウントの E メール送信を再度有効にします。これらの手順を完了するには、AWS Command Line Interface をインストールして設定する必要があります。詳細については、AWS Command Line Interface ユーザーガイドを参照してください。

E メール送信を再有効化するには
  1. コマンドラインで次のコマンドを入力して、アカウントの E メールの送信を再度有効にします。sending_region を、E メール送信を再び有効にするリージョンの名前に置き換えます。

    aws ses update-account-sending-enabled --enabled --region sending_region
  2. コマンドラインで次のコマンドを入力して、アカウントの E メールの送信ステータスを確認します。

    aws ses get-account-sending-enabled --region sending_region

    次の出力が表示された場合は、アカウントの E メール送信が正常に再有効化されています。

    { "Enabled": true }

パート 4: Amazon SNS トピックおよびサブスクリプションを作成する

アラームが発生したときに CloudWatch が Lambda 関数を実行するには、まず Amazon SNS トピックを作成し、Lambda 関数をサブスクライブする必要があります。

Amazon SNS トピックを作成し、Lambda 関数をそのトピックにサブスクライブするには
  1. https://console.aws.amazon.com/sns/v3/home で Amazon SNS コンソールを開きます。

  2. Amazon Simple Notification Service デベロッパーガイド」のステップに従ってトピックを作成します。

    1. [Type] (タイプ) は、(FIFO ではなく) [Standard] (標準) にする必要があります。

  3. Amazon Simple Notification Service デベロッパーガイドのステップに従ってトピックにサブスクライブします。

    1. [プロトコル] で AWS Lambda を選択します。

    2. [Endpoint] に、パート 2: Lambda 関数を作成する で作成した Lambda 関数を選択します。

パート 5: CloudWatch アラームの作成

このセクションでは、メトリクスが特定のしきい値に到達するとトリガーされるアラームを CloudWatch に作成する手順を紹介します。アラームが発生すると、パート 4: Amazon SNS トピックおよびサブスクリプションを作成する で作成した Amazon SNS トピックに通知が送信され、パート 2: Lambda 関数を作成する で作成した Lambda 関数が実行されます。

CloudWatch アラームの作成
  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. リージョンセレクターを使用して、E メール送信を自動的に一時停止するリージョンを選択します。

  3. ナビゲーションペインで、[Alarms] を選択します。

  4. [Create Alarm (アラーム作成)] を選択します。

  5. [Create Alarm] ウィンドウの、[SES Metrics] の下で、[Account Metrics] を選択します。

  6. [Metric Name] で、次のいずれかのオプションを選択します。

    • Reputation.BounceRate – アカウントの全体のハードバウンス率が定義したしきい値を超えた場合に、アカウントの E メール送信を一時停止する場合は、このメトリクスを選択します。

    • Reputation.ComplaintRate – アカウントの全体の苦情率が定義したしきい値を超えた場合に、アカウントの E メール送信を一時停止する場合は、このメトリクスを選択します。

    [Next] を選択します。

  7. 以下の手順を実行します。

    • [Alarm Threshold] の [Name] に、アラームの名前を入力します。

    • [Whenever: Reputation.BounceRate] または [Whenever: Reputation.ComplaintRate] で、アラームをトリガーするしきい値を指定します。

      注記

      バウンス率が 10% を超えるか苦情率が 0.5% を超えると、アカウントは自動的に確認中になります。CloudWatch アラームを発生させるバウンス率または苦情率を指定する場合は、これらの割合より低い値を使用して、お客様のアカウントが確認中とならないようにすることをお勧めします。

    • [アクション] の [アラームが次の時:] で、[状態: 警告] を選択します。[Send notification to] に パート 4: Amazon SNS トピックおよびサブスクリプションを作成する で作成した Amazon SNS トピックを選択します。

    [Create Alarm] を選択します。

パート 6: ソリューションをテストする

ALARM 状態に入ったときに Lambda 関数を実行するようにアラームをテストできるようになりました。SetAlarmState API オペレーションを使用して、アラームの状態を一時的に変更することができます。

このセクションの手順はオプションですが、ソリューション全体が正しく設定されていることを確認するために、これらの手順を完了することをお勧めします。

  1. コマンドラインで次のコマンドを入力して、アカウントの E メールの送信ステータスを確認します。region は、使用しているリージョンの名前に置き換えます。

    aws ses get-account-sending-enabled --region region

    送信がアカウントに対して有効になっている場合、次の出力が表示されます。

    { "Enabled": true }
  2. コマンドラインで次のコマンドを入力して、アラーム状態を一時的に ALARM に変更します。aws cloudwatch set-alarm-state --alarm-name MyAlarm --state-value ALARM --state-reason "Testing execution of Lambda function" --region region

    前述のコマンドで、MyAlarm を、「パート 5: CloudWatch アラームの作成」で作成したアラームの名前に置き換え、region を、E メール送信を自動的に一時停止するリージョンに置き換えます。

    注記

    このコマンドを実行すると、アラームの状態は OK から ALARM に切り替わり、数秒で OK に戻ります。これらのステータスの変更は、CloudWatch コンソールのアラームの [History] タブで DescribeAlarmHistory オペレーションを使用して表示できます。

  3. コマンドラインで次のコマンドを入力して、アカウントの E メールの送信ステータスを確認します。

    aws ses get-account-sending-enabled --region region

    Lambda 関数が正常に実行された場合、次の出力が表示されます。

    { "Enabled": false }
  4. パート 3: アカウントの E メール送信の再有効化 の手順を実行して、アカウントの E メール送信を再度有効にします。