

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 自动为您的整个 Amazon SES 账户暂停电子邮件发送
<a name="monitoring-sender-reputation-pausing-account"></a>

本节中的程序说明了在单个 AWS 地区设置亚马逊 SES、Amazon SNS CloudWatch、Amazon 以及 AWS Lambda 自动暂停发送电子邮件的步骤。如果您从多个区域发送电子邮件，请为要在其中实施此解决方案的每个区域重复执行本节中的过程。

**Topics**
+ [第 1 部分：创建 IAM 角色](#monitoring-sender-reputation-pausing-account-part-1)
+ [第 2 部分：创建 Lambda 函数](#monitoring-sender-reputation-pausing-account-part-2)
+ [第 3 部分：为您的账户重新启用电子邮件发送](#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>

配置自动暂停电子邮件发送的第一步是创建可执行 `UpdateAccountSendingEnabled` API 操作的 IAM 角色。

**创建 IAM 角色**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**。

1. 选择**创建角色**。

1. 在**选择可信实体**页面中，对于**可信实体类型**选择 **AWS 服务**。

1. 在 **Use case**（使用案例）下，选择 **Lambda**，然后选择 **Next**（下一步）。

1. 在 **Add permissions**（添加权限）页面上，选择以下策略：
   + **AWSLambdaBasicExecutionRole**
   + **亚马逊SESFull访问权限**
**提示**  
使用 **Permission policies**（权限策略）下的搜索框可快速找到这些策略，但请注意，在搜索和选择第一个策略后，必须先选择 **Clear filters**（清除筛选条件），然后再搜索和选择第二个策略。

   然后选择**下一步**。

1. 在 **Name, review, and create**（命名、检查和创建）页面的 **Role details**（角色详细信息）下，在 **Role name**（角色名称）字段中为策略输入有意义的名称。

1. 验证您选择的两个策略是否列在 **Permissions policy summary**（权限策略摘要）表中，然后选择 **Create role**（创建角色）。

## 第 2 部分：创建 Lambda 函数
<a name="monitoring-sender-reputation-pausing-account-part-2"></a>

在创建 IAM 角色之后，便可以创建暂停您账户的电子邮件发送的 Lambda 函数。

**创建 Lambda 函数**

1. 打开 AWS Lambda 控制台，网址为[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)。

1. 使用区域选择器来选择要在其中部署此 Lambda 函数的区域。
**注意**  
此功能仅暂停在此步骤中选择的 AWS 区域发送电子邮件。如果您从多个区域发送电子邮件，请为要在其中自动暂停电子邮件发送的每个区域重复执行本节中的过程。

1. 选择**创建函数**。

1. 在 **Create function**（创建函数）下，选择 **Author from scratch**（从头开始创作）。

1. 在 **Basic information**（基本信息）下，完成以下步骤：
   + 对于 **Function name**（函数名称），键入 Lambda 函数的名称。
   + 对于**运行时系统**，选择 **Node.js 18x**（或者选择列表中当前提供的版本）。
   + 对于 **Architecture**（架构），保持预先选择的原定设置值 **x86\$164**。
   + 在 Permissions（权限）下，展开 **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 部分：为您的账户重新启用电子邮件发送
<a name="monitoring-sender-reputation-pausing-account-part-3"></a>

在[第 2 部分：创建 Lambda 函数](#monitoring-sender-reputation-pausing-account-part-2)中测试 Lambda 函数的一个副作用是会为您的 Amazon SES 账户暂停电子邮件发送。在大多数情况下，您不想在 CloudWatch 警报触发之前暂停账户的发送。

本节中的过程可为您的 Amazon SES 账户重新启用电子邮件发送。要完成这些过程，您必须安装并配置 AWS Command Line Interface。有关更多信息，请参阅 [AWS Command Line Interface 《用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)。

**重新启用电子邮件发送**

1. 在命令行键入以下命令，为账户重新启用电子邮件发送。*sending\$1region*替换为您要重新启用电子邮件发送功能的区域名称。

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

1. 在命令行键入以下命令，查看账户的电子邮件发送状态：

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

   如果您看到以下输出，说明已成功为您的账户重新启用了电子邮件发送：

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

## 第 4 部分：创建 Amazon SNS 主题和订阅
<a name="monitoring-sender-reputation-pausing-account-part-4"></a>

 CloudWatch 要在触发警报时执行您的 Lambda 函数，您必须先创建一个 Amazon SNS 主题并订阅该主题的 Lambda 函数。

**要创建 Amazon SNS 主题并让 Lambda 函数订阅该主题，请执行以下操作：**

1. [在 v3/home 上打开亚马逊 SNS 控制台。https://console.aws.amazon.com/sns/](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**（类型）必须是 **Standard**（标准）（而不是 **FIFO**）。

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. 使用区域选择器来选择要在其中自动暂停电子邮件发送的区域。

1. 在导航窗格中，选择 **Alarms (告警)**。

1. 选择**创建告警**。

1. 在 **Create Alarm**（创建告警）窗口上，在 **SES Metrics**（SES 指标）下选择 **Account Metrics**（账户指标）。

1. 在 **Metric Name**（指标名称）下，选择以下选项之一：
   + **声誉。 BounceRate**— 如果您想在账户的整体硬退回率超过您定义的阈值时暂停账户电子邮件发送，请选择此指标。
   + **声誉。 ComplaintRate**— 如果您想在账户的总体投诉率超过您定义的阈值时暂停向账户发送电子邮件，请选择此指标。

   选择**下一步**。

1. 完成以下步骤：
   + 在 **Alarm Threshold**（告警阈值）下，对于 **Name**（名称），键入警报的名称。
   + 在 “**随时：声誉” 之下。 BounceRate**或**随时：声誉。 ComplaintRate**，指定导致警报触发的阈值。
**注意**  
如果退信率超过 5% 或投诉率超过 0.1%，账户会自动置于审核状态。当您指定触发 CloudWatch 警报的退回率或投诉率时，我们建议您使用低于这些比率的值，以防止您的账户受到审查。
   + 在 **Actions（操作）**下，为 **Whenever this alarm（每当此告警）**选择 **State is ALARM（状态为“告警”）**。对于 **Send notification to (发送通知到)**，选择您在[第 4 部分：创建 Amazon SNS 主题和订阅](#monitoring-sender-reputation-pausing-account-part-4)中创建的 Amazon SNS 主题。

   选择**创建警报**。

## 第 6 部分：测试解决方案
<a name="monitoring-sender-reputation-pausing-account-part-6"></a>

您现在可以测试警报以确保它在进入 `ALARM` 状态时执行 Lambda 函数。您可以使用 `SetAlarmState` API 操作临时更改警报状态。

这一部分中的过程是可选操作，但我们建议您完成这些过程以确保整个解决方案配置正确。

1. 在命令行键入以下命令，查看账户的电子邮件发送状态。*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*替换为要自动暂停电子邮件发送的区域。
**注意**  
当您执行此命令时，警报状态会从 `OK` 切换为 `ALARM` 并在几秒后切换回 `OK`。您可以在 CloudWatch 控制台中警报的 “**历史记录**” 选项卡上或使用[DescribeAlarmHistory](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DescribeAlarmHistory.html)操作来查看这些状态更改。

1. 在命令行键入以下命令，查看账户的电子邮件发送状态。

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

   如果 Lambda 函数执行成功，您会看到以下输出：

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

1. 完成[第 3 部分：为您的账户重新启用电子邮件发送](#monitoring-sender-reputation-pausing-account-part-3)中的步骤以为您的账户重新启用电子邮件发送。