設定セットの E メール送信を自動的に一時停止する - Amazon Simple Email Service

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

設定セットの E メール送信を自動的に一時停止する

Amazon SES に設定された特定の設定を使用して送信された E メールに固有の評価メトリクスをエクスポートするように Amazon CloudWatch を設定できます。これらのメトリクスを使用して、これらの設定セットに固有の CloudWatch アラームを作成できます。これらのアラームが特定のしきい値を超えると、Amazon SES アカウントの E メール送信機能全体に影響を与えずに、指定した設定セットを使用する E メールの送信を自動的に一時停止することができます。

注記

このセクションで説明するソリューションは、単一の AWS リージョン内の特定の設定セットに対する E メール送信を一時停止します。複数のリージョンから E メールを送信する場合は、このソリューションを実装するリージョンごとにこのセクションの手順を繰り返します。

パート 1: 設定セットの評価メトリクスレポートを有効にする

設定セットの E メール送信を自動的に一時停止するように Amazon SES を設定する前に、まず設定セットの評価メトリクスのエクスポートを有効にする必要があります。

設定セットのバウンスと苦情メトリクスのエクスポートを有効にするには、レピュテーションメトリクスの表示とエクスポート の手順を完了します。

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

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

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

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

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

  4. [Select type of trusted entity] (信頼されたエンティティの種類を選択) で、[AWS service] (AWS のサービス) を選択します。

  5. [このロールを使用するサービスを選択] の下で、[Lambda] を選択します。[Next: Permissions (次へ: アクセス許可)] を選択します。

  6. [Attach permissions policies] ページで、次のいずれかのポリシーを選択します。

    • [AWS LambdaBasicExecutionRole]

    • AmazonSESFullAccess

    ヒント

    ポリシーのリストの上部にある検索ボックスを使用すると、これらのポリシーをすばやく特定できます。

    [Next: Review] を選択します。

  7. [Review] ページで、[Name] にロールの名前を入力します。[ロールの作成] を選択します。

パート 3: 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. [Author from scratch] で、次のステップを実行します。

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

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

    • [Role] で、[Choose an existing role] を選択します。

    • [Existing role] には、パート 2: IAM ロールの作成 で作成した IAM ロールを選択します。

    [Create function] を選択します。

  6. コードエディタの [Function code] に、以下のコードを貼り付けます。

    'use strict'; var aws = require('aws-sdk'); // Create a new SES object. var ses = new aws.SES(); // Specify the parameters for this operation. In this example, you pass the // Enabled parameter, with a value of false (Enabled = false disables email // sending, Enabled = true enables it). You also pass the ConfigurationSetName // parameter, with a value equal to the name of the configuration set for // which you want to pause email sending. var params = { ConfigurationSetName: ConfigSet, Enabled: false }; exports.handler = (event, context, callback) => { // Pause sending for a configuration set ses.updateConfigurationSetSendingEnabled(params, function(err, data) { if(err) { console.log(err.message); } else { console.log(data); } }); };

    前述のコードの ConfigSet を設定セットの名前と置き換えます。[Save] を選択します。

  7. [Test] を選択します。[Configure test event] ウィンドウが表示されたら、[Event name] フィールドに名前を入力してから、[Create] を選択します。

  8. ページ上部の通知バーに Execution result: succeeded と表示されていることを確認します。関数の実行に失敗した場合は、次のことを実行します。

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

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

パート 4: 設定セットの E メール送信の再有効化

パート 3: Lambda 関数を作成する で Lambda 関数のアップロードとテストをする副作用は、設定セットの E メール送信が一時停止していることです。ほとんどの場合は、CloudWatch アラームがトリガーされるまで、設定セットの送信を一時停止しません。

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

E メール送信を再有効化するには
  1. コマンドラインで次のコマンドを入力して、設定セットの E メールの送信を再度有効にします。

    aws ses update-configuration-set-sending-enabled \ --configuration-set-name ConfigSet \ --enabled

    前述のコマンドで、ConfigSet を、E メール送信を一時停止する設定セットの名前に置き換えます。

  2. コマンドラインで次のコマンドを入力して、E メールの送信が有効であることを確認します。

    aws ses describe-configuration-set \ --configuration-set-name ConfigSet \ --configuration-set-attribute-names reputationOptions

    このコマンドは、次の例と同様の出力を生成します。

    { "ConfigurationSet": { "Name": "ConfigSet" }, "ReputationOptions": { "ReputationMetricsEnabled": true, "SendingEnabled": true } }

    SendingEnabled の値が true の場合、設定セットの E メール送信は正常に再有効化されています。

パート 5: Amazon SNS トピックを作成する

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

Amazon SNS トピックを作成するには
  1. Amazon SNS コンソール (https://console.aws.amazon.com/sns/v3/home) を開きます。

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

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

  4. [Create new topic] を選択します。

  5. [Create new topic] ウィンドウで、[Topic name] にトピックの名前を入力します。必要に応じて、[Display name] フィールドにわかりやすい名前を入力することもできます。

    [トピックの作成] を選択します。

  6. トピックのリストで、前のステップで作成したトピックの横にあるチェックボックスをオンにします。[Actions] メニューで、[Subscribe to topic] を選択します。

  7. [Create subscription] ウィンドウで、以下の選択を行います。

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

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

    • [Version or alias] に [default] を選択します。

  8. [Create subscription] を選択します。

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

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

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

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

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

  4. [Create Alarm] を選択します。

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

  6. [ses:configuration-set] 列で、アラームを作成する設定セットを検索します。[Metric Name] で、次のいずれかのオプションを選択します。

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

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

    [Next] を選択します。

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

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

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

      注記

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

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

    [Create Alarm] を選択します。

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

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

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

ソリューションをテストするには
  1. コマンドラインで次のコマンドを入力して、設定セットの E メールの送信ステータスを確認します。

    aws ses describe-configuration-set --configuration-set-name ConfigSet

    送信が設定セットに対して有効になっている場合、次の出力が表示されます。

    { "ConfigurationSet": { "Name": "ConfigSet" }, "ReputationOptions": { "ReputationMetricsEnabled": true, "SendingEnabled": true } }

    SendingEnabled の値が true の場合、現在設定セットの E メール送信は有効になっています。

  2. コマンドラインで次のコマンドを入力して、アラーム状態を一時的に ALARM に変更します。

    aws cloudwatch set-alarm-state \ --alarm-name MyAlarm \ --state-value ALARM \ --state-reason "Testing execution of Lambda function"

    前述のコマンドの MyAlarmパート 6: CloudWatch アラームの作成 で作成したアラームの名前に置き換えます。

    注記

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

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

    aws ses describe-configuration-set \ --configuration-set-name ConfigSet

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

    { "ConfigurationSet": { "Name": "ConfigSet" }, "ReputationOptions": { "ReputationMetricsEnabled": true, "SendingEnabled": false } }

    SendingEnabled の値が false の場合、設定セットの E メール送信は無効になり、Lambda 関数が正常に実行されたことを示します。

  4. パート 4: 設定セットの E メール送信の再有効化 の手順を実行して、設定セットの E メール送信を再度有効にします。