

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

# Amazon SES アカウントの E メール送信を自動的に一時停止する
<a name="monitoring-sender-reputation-pausing-account"></a>

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

**Topics**
+ [パート 1: IAM ロールの作成](#monitoring-sender-reputation-pausing-account-part-1)
+ [パート 2: Lambda 関数を作成する](#monitoring-sender-reputation-pausing-account-part-2)
+ [パート 3: アカウントの E メール送信の再有効化](#monitoring-sender-reputation-pausing-account-part-3)
+ [パート 4: Amazon SNS トピックおよびサブスクリプションを作成する](#monitoring-sender-reputation-pausing-account-part-4)
+ [パート 5: CloudWatch アラームの作成](#monitoring-sender-reputation-pausing-account-part-5)
+ [パート 6: ソリューションをテストする](#monitoring-sender-reputation-pausing-account-part-6)

## パート 1: IAM ロールの作成
<a name="monitoring-sender-reputation-pausing-account-part-1"></a>

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

**IAM ロールを作成するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。

1. [**ロールの作成**] を選択してください。

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

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

1. **[Add permissions]** (アクセス許可を追加) ページで、次のポリシーを選択します。
   + **AWSLambdaBasicExecutionRole**
   + **AmazonSESFullAccess**
**ヒント**  
**[Permission policies]** (アクセス許可ポリシー) の下にある検索ボックスを使用して、これらのポリシーをすばやく特定します。ただし、最初のポリシーを検索して選択した後、2 番目のポリシーを検索して選択する前に、**[Clear filters]** (フィルターをクリア) を選択する必要があります。

   次いで、**[次へ]** を選択します。

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

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

## パート 2: Lambda 関数を作成する
<a name="monitoring-sender-reputation-pausing-account-part-2"></a>

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

**Lambda 関数を作成するには**

1. [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) で AWS Lambda コンソールを開きます。

1. リージョンセレクターを使用して、この Lambda 関数をデプロイするリージョンを選択します。
**注記**  
この関数は、このステップで選択した AWS リージョンでのみ E メール送信を一時停止します。複数のリージョンから E メールを送信する場合は、E メール送信を自動的に一時停止するリージョンごとにこのセクションの手順を繰り返します。

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

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

1. **[Basic information]** (基本的な情報) ページで、以下のステップを完了します。
   + **[Function name]** (関数名) に Lambda 関数の名前を入力します。
   + **[ランタイム]** で、**[Node.js 18x]** (または、現在選択リストで提供されているバージョン) を選択します。
   + **[Architecture]** (アーキテクチャ) で、事前に選択されたデフォルト、**x86\$164** を保持します。
   + アクセス許可で、**[Change default execution role]** (デフォルト実行ロールの変更) を拡張し、**[Use an existing role]** (既存のロールを使用) を選択します。
   + **[Existing role]** (既存のロール) リストボックスで、[パート 1: IAM ロールの作成](#monitoring-sender-reputation-pausing-account-part-1) で作成した IAM ロールを選択します。

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

1. コードエディタの **[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);
           }
       });
   };
   ```

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

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

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

1. そのすぐ下に、**[Execution results]** (実行結果) タブが表示されます。右に `Status: Succeeded` が表示されていることを確認します。関数の実行に失敗した場合は、次のことを実行します。
   + [パート 1: IAM ロールの作成](#monitoring-sender-reputation-pausing-account-part-1) で作成した IAM ロールに正しいポリシーが含まれていることを確認します。
   + Lambda 関数のコードにエラーがないことを確認します。Lambda コードエディタでは、構文エラーやその他の潜在的な問題が自動的にハイライトされます。

## パート 3: アカウントの E メール送信の再有効化
<a name="monitoring-sender-reputation-pausing-account-part-3"></a>

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

このセクションの手順では、Amazon SES アカウントの E メール送信を再度有効にします。これらの手順を完了するには、 AWS Command Line Interfaceをインストールして設定する必要があります。詳細については、「[AWS Command Line Interface ユーザーガイド](https://docs.aws.amazon.com/cli/latest/userguide/)」を参照してください。

**E メール送信を再有効化するには**

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

   ```
   aws ses update-account-sending-enabled --enabled --region sending_region
   ```

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

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

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

   ```
   {
       "Enabled": true 
   }
   ```

## パート 4: Amazon SNS トピックおよびサブスクリプションを作成する
<a name="monitoring-sender-reputation-pausing-account-part-4"></a>

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

**Amazon SNS トピックを作成し、Lambda 関数をそのトピックにサブスクライブするには**

1. Amazon SNS コンソールの[https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home)を開いてください。

1. 「*Amazon Simple Notification Service デベロッパーガイド*」のステップに従って[トピックを作成](https://docs.aws.amazon.com/sns/latest/dg/sns-create-topic.html)します。

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

1. *Amazon Simple Notification Service デベロッパーガイド*のステップに従って[トピックにサブスクライブ](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)します。

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

   1. [**Endpoint**] に、[パート 2: Lambda 関数を作成する](#monitoring-sender-reputation-pausing-account-part-2) で作成した Lambda 関数を選択します。

## パート 5: CloudWatch アラームの作成
<a name="monitoring-sender-reputation-pausing-account-part-5"></a>

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

**CloudWatch アラームの作成**

1. CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)) を開きます。

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

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

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

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

1. [**Metric Name**] で、次のいずれかのオプションを選択します。
   + **Reputation.BounceRate** – アカウントの全体のハードバウンス率が定義したしきい値を超えた場合に、アカウントの E メール送信を一時停止する場合は、このメトリクスを選択します。
   + **Reputation.ComplaintRate** – アカウントの全体の苦情率が定義したしきい値を超えた場合に、アカウントの E メール送信を一時停止する場合は、このメトリクスを選択します。

   [**Next**] を選択します。

1. 以下の手順を実行します。
   + [**Alarm Threshold**] の [**Name**] に、アラームの名前を入力します。
   + [**Whenever: Reputation.BounceRate**] または [**Whenever: Reputation.ComplaintRate**] で、アラームをトリガーするしきい値を指定します。
**注記**  
バウンス率が 5% を超えるか、苦情率が 0.1% を超えると、アカウントは自動的に確認中になります。CloudWatch アラームを発生させるバウンス率または苦情率を指定する場合は、これらの割合より低い値を使用して、お客様のアカウントが確認中とならないようにすることをお勧めします。
   + [**アクション**] の [**アラームが次の時:**] で、[**状態: 警告**] を選択します。[**Send notification to**] に [パート 4: Amazon SNS トピックおよびサブスクリプションを作成する](#monitoring-sender-reputation-pausing-account-part-4) で作成した Amazon SNS トピックを選択します。

   [**Create Alarm**] を選択します。

## パート 6: ソリューションをテストする
<a name="monitoring-sender-reputation-pausing-account-part-6"></a>

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

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

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

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

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

   ```
   {
       "Enabled": true 
   }
   ```

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

   前述のコマンドで、*MyAlarm* を、「[パート 5: CloudWatch アラームの作成](#monitoring-sender-reputation-pausing-account-part-5)」で作成したアラームの名前に置き換え、*region* を、E メール送信を自動的に一時停止するリージョンに置き換えます。
**注記**  
このコマンドを実行すると、アラームの状態は `OK` から `ALARM` に切り替わり、数秒で `OK` に戻ります。これらのステータスの変更は、CloudWatch コンソールのアラームの [**History**] タブで [DescribeAlarmHistory](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DescribeAlarmHistory.html) オペレーションを使用して表示できます。

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

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

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

   ```
   {
       "Enabled": false
   }
   ```

1. [パート 3: アカウントの E メール送信の再有効化](#monitoring-sender-reputation-pausing-account-part-3) の手順を実行して、アカウントの E メール送信を再度有効にします。