

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

# 为 Amazon SES 配置 Amazon SNS 通知
<a name="configure-sns-notifications"></a>

Amazon SES 可以通过 [Amazon Simple Notification Service（Amazon SNS）](https://aws.amazon.com/sns)向您通知有关退回邮件、投诉和送达的情况。

您可以在 Amazon SES 控制台中或者使用 Amazon SES API 来配置通知。

**Topics**
+ [先决条件](#configure-feedback-notifications-prerequisites)
+ [使用 Amazon SES 控制台来配置通知](#configure-feedback-notifications-console)
+ [使用 Amazon SES API 来配置通知](#configure-feedback-notifications-api)
+ [反馈通知故障排除](#configure-feedback-notifications-troubleshooting)

## 先决条件
<a name="configure-feedback-notifications-prerequisites"></a>

在 Amazon SES 中设置 Amazon SNS 通知之前，请完成以下步骤：

1. 在 Amazon SNS 中创建主题。有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[创建主题](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)。
**重要**  
当您使用 Amazon SNS 创建主题时，对于 **Type (类型)**，仅选择 **Standard (标准)**。（SES 不支持 FIFO 类型主题。）

   无论是创建新的 SNS 主题还是选择现有主题，都需要授予 SES 访问权限，才能向该主题发布通知。

   要授予 Amazon SES 发布主题通知的权限，请在 SNS 控制台的**编辑主题**屏幕上，展开**访问策略**，并在 **JSON 编辑器**中，添加以下权限策略：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "notification-policy",
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": "ses.amazonaws.com"
               },
               "Action": "sns:Publish",
               "Resource": "arn:aws:sns:us-east-1:111122223333:topic_name",
               "Condition": {
                   "StringEquals": {
                       "AWS:SourceAccount": "111122223333",
                       "AWS:SourceArn": "arn:aws:ses:topic_region:111122223333:identity/identity_name"
                   }
               }
           }
       ]
   }
   ```

------

   对前面的策略示例进行以下更改：
   + *topic\$1region*替换为您创建 SNS 主题的 AWS 区域。
   + 将 *111122223333* 替换为您的 AWS 账户 ID。
   + *topic\$1name*替换为您的 SNS 主题的名称。
   + *identity\$1name*替换为您订阅 SNS 主题的经过验证的身份（电子邮件地址或域名）。

1. 使用至少一个端点订阅主题。例如，如果您希望通过短信接收通知，则使用 SMS 端点（即，移动电话号码）订阅主题。要通过电子邮件接收通知，使用电子邮件端点（电子邮件地址）订阅主题。

   有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[入门](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. （可选）如果您的 Amazon SNS 主题使用 AWS Key Management Service (AWS KMS) 进行服务器端加密，则必须向密钥策略添加权限。 AWS KMS 您可以通过将以下策略附加到 AWS KMS 密钥策略来添加权限：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowSESToUseKMSKey",
               "Effect": "Allow",
               "Principal": {
                   "Service": "ses.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

## 使用 Amazon SES 控制台来配置通知
<a name="configure-feedback-notifications-console"></a>

**使用 Amazon SES 控制台来配置通知**

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

1. 在导航窗格中的**配置**下，选择**身份**。

1. 在 **Identities**（身份）容器中，选择您希望在从此身份发送的消息导致退回、投诉或送达时接收反馈通知的已验证身份。
**重要**  
经验证的域通知设置将应用于从该域中的电子邮件址（经验证的电子邮件地址*除外*）发送的所有邮件。

1. 在您选择的已验证身份的详细信息屏幕中，选择 **Notifications**（通知）选项卡，然后选择 **Feedback notifications**（反馈通知）容器中的 **Edit**（编辑）。

1. 展开要接收通知的每种反馈类型的 SNS 主题列表框，然后选择您拥有的 SNS 主题之一、**No SNS topic**（无 SNS 主题），或者 **SNS topic you don’t own**（你不拥有的 SNS 主题）。

   1. 如果您选择了 **SNS topic you don’t own**（您不拥有的 SNS 主题），**SNS topic ARN**（SNS 主题 ARN）将显示字段，您必须在其中输入委托发件人与您共享的 SNS 主题 ARN。（只有您的委托发件人才会收到这些通知，因为他们拥有 SNS 主题。要了解有关委托发送的更多信息，请参阅[发送授权概览](sending-authorization-overview.md)。）
**重要**  
您用于退货、投诉和送达通知的 Amazon SNS 主题必须与您使用 Amazon SES 时 AWS 区域 使用的主题相同。  
此外，您必须订阅主题的一个或多个端点才能接收通知。例如，如果您要将通知发送到电子邮件地址，则必须使用电子邮件端点订阅主题。有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[入门](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

1. （可选）如果您希望主题通知包括原始电子邮件中的标头，请选中 **Include original email headers**（包括原始电子邮件标头）框直接位于每种反馈类型的 SNS 主题名称下方。此选项仅在您已将 Amazon SNS 主题分配到关联的通知类型时可用。有关原始电子邮件标头的内容的信息，请参阅 [通知内容](notification-contents.md)中的 `mail` 对象。

1. 选择 **Save changes**（保存更改）。您对通知设置所做的更改可能需要几分钟才能生效。

1. （可选）如果您为退回邮件和投诉都选择 Amazon SNS 主题通知，则可以完全禁用电子邮件通知，以免通过电子邮件和 SNS 通知接收双重通知。要禁用退回邮件和投诉的电子邮件通知，请在 **Email Feedback Forwarding**（电子邮件反馈转发）容器中已验证身份的详细信息屏幕中的 **Notifications**（通知）选项卡下方选择 **Edit**（编辑）、取消勾选 **Enabled**（已启用）方框，然后选择 **Save changes**（保存更改）。

在配置您的设置之后，您将开始接收 Amazon SNS 主题的退回邮件、投诉和送达通知。这些通知采用 JavaScript对象表示法 (JSON) 格式，并遵循中描述的结构[通知内容](notification-contents.md)。

您将需要按标准 Amazon SNS 费率为退回邮件、投诉和送达通知付费。有关更多信息，请参阅 [Amazon SNS 定价页面](https://aws.amazon.com/sns/pricing)。

**注意**  
如果由于主题已被删除或您 AWS 账户 不再有权向该主题发布内容而尝试向该主题发布内容失败，Amazon SES 会删除该主题的配置，前提是该主题已配置为退回或投诉（不是传送——对于送达通知，SES 不会删除 SNS 主题配置设置）。此外，Amazon SES 还会为身份重新启用退回邮件和投诉电子邮件通知，并且您将通过电子邮件收到更改通知。如果将多个身份配置为使用该主题，则在每个身份无法发布到该主题时，更改每个身份的主题配置。

## 使用 Amazon SES API 来配置通知
<a name="configure-feedback-notifications-api"></a>

您也可以使用 Amazon SES API 来配置退回邮件、投诉和送达通知。使用以下操作来配置通知：
+ [SetIdentityNotificationTopic](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityNotificationTopic.html)
+ [SetIdentityFeedbackForwardingEnabled](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityFeedbackForwardingEnabled.html)
+ [GetIdentityNotificationAttributes](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityNotificationAttributes.html)
+ [SetIdentityHeadersInNotificationsEnabled](https://docs.aws.amazon.com/ses/latest/APIReference/API_SetIdentityHeadersInNotificationsEnabled.html)

您可以使用这些 API 操作编写用于通知的自定义前端应用程序。有关与通知相关的 API 操作的完整描述，请参阅 [Amazon Simple Email Service API 参考](https://docs.aws.amazon.com/ses/latest/APIReference/)。

## 反馈通知故障排除
<a name="configure-feedback-notifications-troubleshooting"></a>

**未收到通知**  
如果您没有收到通知，请确保您已使用端点订阅发送通知的主题。当您使用电子邮件端点节点订阅主题时，您会收到一封电子邮件，要求您确认订阅。在开始接收电子邮件通知之前，您必须确认订阅。有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[入门](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)。

**`InvalidParameterValue`选择主题时的 错误**  
如果您收到表明发生 `InvalidParameterValue` 错误的错误消息，请检查 Amazon SNS 主题以查看它是否使用 AWS KMS进行了加密。如果是，则必须修改 AWS KMS 密钥的策略。请参阅 [先决条件](#configure-feedback-notifications-prerequisites) 以获取示例策略。