

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

# 自动暂停配置集电子邮件发送
<a name="monitoring-sender-reputation-pausing-configuration-set"></a>

您可以将 Amazon SES 配置为导出特定于使用设置为 Amazon 的特定配置发送的电子邮件的信誉指标 CloudWatch。然后，您可以使用这些指标来创建特定于这些配置集的 CloudWatch 警报。当这些警报超出特定阈值时，您可以自动暂停使用指定配置集的电子邮件发送，而不会影响您的 Amazon SES 账户的整体电子邮件发送功能。

**注意**  
本节中描述的解决方案暂停发送单个 AWS 区域中特定配置集的电子邮件。如果您从多个区域发送电子邮件，请为要在其中实施此解决方案的每个区域重复执行本节中的过程。

**Topics**
+ [第 1 部分：启用配置集声誉指标的导出](#monitoring-sender-reputation-pausing-configuration-set-part-1)
+ [第 2 部分：创建 IAM 角色](#monitoring-sender-reputation-pausing-configuration-set-part-2)
+ [第 3 部分：创建 Lambda 函数](#monitoring-sender-reputation-pausing-configuration-set-part-3)
+ [第 4 部分：重新启用配置集的电子邮件发送](#monitoring-sender-reputation-pausing-configuration-set-part-4)
+ [第 5 部分：创建 Amazon SNS 主题](#monitoring-sender-reputation-pausing-configuration-set-part-5)
+ [第 6 部分：创建 CloudWatch 警报](#monitoring-sender-reputation-pausing-configuration-set-part-6)
+ [第 7 部分：测试解决方案](#monitoring-sender-reputation-pausing-configuration-set-part-7)

## 第 1 部分：启用配置集声誉指标的导出
<a name="monitoring-sender-reputation-pausing-configuration-set-part-1"></a>

您必须首先启用配置集的声誉指标的导出，然后才能配置 Amazon SES 以自动暂停该配置集的电子邮件发送。

要启用配置集的退回邮件和投诉指标的导出，请完成[查看和导出声誉指标](configuration-sets-export-metrics.md)中的步骤。

## 第 2 部分：创建 IAM 角色
<a name="monitoring-sender-reputation-pausing-configuration-set-part-2"></a>

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

**创建 IAM 角色**

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

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

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

1. 在 **选择受信任实体的类型** 下，选择 **AWS 服务**。

1. 在**选择将使用此角色的服务**下，选择 **Lambda**。选择 **Next: Permissions**（下一步: 权限）。

1. 在 **Attach permissions policies**（附加权限策略）页面上，选择以下策略：
   + **AWS Lambda BasicExecutionRole**
   + **Amazon A SESFull cces** s（我们建议您使用根据您的需求量身定制的自定义角色，包括呼叫权限[https://docs.aws.amazon.com/ses/latest/APIReference/API_UpdateConfigurationSetSendingEnabled.html](https://docs.aws.amazon.com/ses/latest/APIReference/API_UpdateConfigurationSetSendingEnabled.html)。） 
**提示**  
使用策略列表顶部的搜索框可快速找到这些策略。

   请选择 **Next: Review**（下一步：审核）。

1. 在 **Review**（审核）页面上，对于 **Name**（名称），为角色键入一个名称。选择**创建角色**。

   

## 第 3 部分：创建 Lambda 函数
<a name="monitoring-sender-reputation-pausing-configuration-set-part-3"></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. 在 **Author from scratch**（从头开始创作）下，完成以下步骤：
   + 对于 **Name**（名称），键入 Lambda 函数的名称。
   + 对于 **Runtime**（运行时），选择 **Node.js 14**（或者选择列表中当前提供的版本）。
   + 对于 **Role**（角色），选择 **Choose an existing role**（选择现有角色）。
   + 对于 **Existing role (现有角色)**，选择您在[第 2 部分：创建 IAM 角色](#monitoring-sender-reputation-pausing-configuration-set-part-2)中创建的 IAM 角色。

   选择**创建函数**。

1. 在 **Function code**（函数代码）下，在代码编辑器中粘贴以下代码：

   ```
   'use strict';
   
   import {
       SES
   }
   from 'aws-sdk';
   
   const ses = new SES();
   const configSet = 'CONFIG_SET_NAME_HERE';
   
   const params = {
       ConfigurationSetName: configSet,
       Enabled: false
   };
   
   export const handler = async (event) => {
       try {
           const data = await ses.updateConfigurationSetSendingEnabled(params).promise();
           
           console.log('Configuration Set Update:', data);
           
           return {
               statusCode: 200,
               body: JSON.stringify({
                   message: 'Successfully paused email sending for configuration set.',
                   data
               }),
           };
       }
       catch (err) {
           console.error('Error:', err.message);
           return {
               statusCode: 500,
               body: JSON.stringify({
                   message: 'Failed to pause email sending for configuration set.',
                   error: err.message
               }),
           };
       }
   };
   ```

   将上述代码*ConfigSet*中的配置集替换为配置集的名称。选择**保存**。

1. 选择 **Test**（测试）。如果 **Configure test event**（配置测试事件）窗口出现，在 **Event name**（事件名称）字段中键入一个名称，然后选择 **Create**（创建）。

1.  确保页面顶部的通知栏显示 `Execution result: succeeded`。如果函数执行失败，请执行以下操作：
   + 确认您在[第 2 部分：创建 IAM 角色](#monitoring-sender-reputation-pausing-configuration-set-part-2)中创建的 IAM 角色包含正确的策略。
   + 确认 Lambda 函数中的代码不包含任何错误。Lambda 代码编辑器会自动突出显示语法错误和其他潜在问题。

## 第 4 部分：重新启用配置集的电子邮件发送
<a name="monitoring-sender-reputation-pausing-configuration-set-part-4"></a>

在[第 3 部分：创建 Lambda 函数](#monitoring-sender-reputation-pausing-configuration-set-part-3)中测试 Lambda 函数的一个副作用是会暂停配置集的电子邮件发送。在大多数情况下，您不希望在触发 CloudWatch 警报之前暂停发送配置集。

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

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

1. 在命令行键入以下命令，为配置集重新启用电子邮件发送：

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

   在前面的命令中，*ConfigSet*替换为要暂停发送电子邮件的配置集的名称。

1. 在命令行键入以下命令，确保启用了电子邮件发送：

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

   该命令生成类似于以下示例的输出：

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

   如果 `SendingEnabled` 的值为 `true`，说明该配置集的电子邮件发送已成功重新启用。

## 第 5 部分：创建 Amazon SNS 主题
<a name="monitoring-sender-reputation-pausing-configuration-set-part-5"></a>

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

**创建 Amazon SNS 主题**

1. [在 v3/home 上打开亚马逊 SNS 控制台。https://console.aws.amazon.com/sns/](https://console.aws.amazon.com/sns/v3/home)

1. 使用区域选择器来选择要在其中自动暂停电子邮件发送的区域。

1. 在导航窗格中，选择**主题**。

1. 选择 **创建新主题**。

1. 在 **Create new topic**（创建新主题）窗口中，对于 **Topic name**（主题名称），为主题键入一个名称。(可选) 在 **Display name**（显示名称）字段中键入一个更具描述性的名称。

   选择**创建主题**。

1. 在主题列表中，选中您在上一步中创建的主题旁的框。在 **Actions**（操作）菜单上，选择 **Subscribe to topic**（订阅主题）。

1. 在 **Create subscription**（创建订阅）窗口中，进行以下选择：
   + 在**协议**中，选择 **AWS Lambda**。
   + 对于 **Endpoint (终端节点)**，选择您在[第 3 部分：创建 Lambda 函数](#monitoring-sender-reputation-pausing-configuration-set-part-3)中创建的 Lambda 函数。
   + 对于 **Version or alias**（版本或别名），选择 **default**（原定设置）。

1. 选择**创建订阅**。

## 第 6 部分：创建 CloudWatch 警报
<a name="monitoring-sender-reputation-pausing-configuration-set-part-6"></a>

本节包含在中创建警报的过程 CloudWatch ，该警报将在指标达到特定阈值时触发。警报触发后会向在[第 5 部分：创建 Amazon SNS 主题](#monitoring-sender-reputation-pausing-configuration-set-part-5)中创建的 Amazon SNS 主题发送通知，然后该主题执行在[第 3 部分：创建 Lambda 函数](#monitoring-sender-reputation-pausing-configuration-set-part-3)中创建的 Lambda 函数。

**创建 CloudWatch 警报**

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

1. 使用区域选择器来选择要在其中自动暂停电子邮件发送的区域。

1. 在左侧的导航窗格中，选择**警报**。

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

1. 在**创建警报**窗口中的 **SES 指标** 下，选择**配置集指标**。

1. 在 **ses:configuration-set** 列中，找到您要为其创建警报的配置集。在 **Metric Name**（指标名称）下，选择以下选项之一：
   + **声誉。 BounceRate**— 如果您想在配置集的总体硬退回率超过您定义的阈值时暂停发送该配置集的电子邮件，请选择此指标。
   + **声誉。 ComplaintRate**— 如果您想在配置集的总体投诉率超过您定义的阈值时暂停发送该配置集的电子邮件，请选择此指标。

   选择**下一步**。

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

   选择**创建警报**。

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

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

本节中的过程是可选的，但我们建议您完成这些过程来验证整个解决方案的配置是否正确。

**测试解决方案**

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

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

   如果为配置集启用了发送，您会看到以下输出：

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

   如果 `SendingEnabled` 的值为 `true`，说明该配置集的电子邮件发送目前已启用。

1. 在命令行键入以下命令，将警报状态临时更改为 `ALARM`：

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

   将前面的命令替换为您*MyAlarm*在中创建的警报的名称[第 6 部分：创建 CloudWatch 警报](#monitoring-sender-reputation-pausing-configuration-set-part-6)。
**注意**  
当您执行此命令时，警报状态会从 `OK` 切换为 `ALARM` 并在几秒后切换回 `OK`。您可以在 CloudWatch 控制台中警报的 “**历史记录**” 选项卡上或使用[DescribeAlarmHistory](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_DescribeAlarmHistory.html)操作来查看这些状态更改。

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

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

   如果 Lambda 函数执行成功，您将看到类似于以下示例的输出：

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

   如果 `SendingEnabled` 的值为 `false`，则将禁用配置集的电子邮件发送，指示 Lambda 函数已成功执行。

1. 完成[第 4 部分：重新启用配置集的电子邮件发送](#monitoring-sender-reputation-pausing-configuration-set-part-4)中的步骤，为配置集重新启用电子邮件发送。