为 Amazon SES 配置 Amazon SNS 通知 - Amazon Simple Email Service

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

为 Amazon SES 配置 Amazon SNS 通知

Amazon SES 可以通过 Amazon Simple Notification Service(Amazon SNS)向您通知有关退回邮件、投诉和送达的情况。

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

先决条件

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

  1. 在 Amazon SNS 中创建主题。有关更多信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的创建主题

    重要

    当您使用 Amazon SNS 创建主题时,对于 Type (类型),仅选择 Standard (标准)。(SES 不支持 FIFO 类型主题。)

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

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

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

    对前面的策略示例进行以下更改:

    • topic_region 替换为您创建 SNS 主题的 AWS 区域。

    • 111122223333 替换为您的 AWS 账户 ID。

    • topic_name 替换为您的 SNS 主题名称。

    • identity_name 替换为您订阅 SNS 主题的已验证身份(电子邮件地址或域)。

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

    有关更多信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的入门

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

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

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

使用 Amazon SES 控制台来配置通知
  1. 打开 Amazon SES 控制台,网址为:https://console.aws.amazon.com/ses/

  2. 在导航窗格中的 Configuration(配置)下,选择 Verified identities(已验证身份)。

  3. Identities(身份)容器中,选择您希望在从此身份发送的消息导致退回、投诉或送达时接收反馈通知的已验证身份。

    重要

    经验证的域通知设置将应用于从该域中的电子邮件址(经验证的电子邮件地址除外)发送的所有邮件。

  4. 在您选择的已验证身份的详细信息屏幕中,选择 Notifications(通知)选项卡,然后选择 Feedback notifications(反馈通知)容器中的 Edit(编辑)。

  5. 展开要接收通知的每种反馈类型的 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 主题。要了解有关委托发送的更多信息,请参阅发送授权概览。)

    重要

    您用于退货、投诉和送达通知的 Amazon SNS 主题必须与您使用 Amazon SES 时 AWS 区域 使用的主题相同。

    此外,您必须订阅主题的一个或多个终端节点才能接收通知。例如,如果您要将通知发送到电子邮件地址,则必须使用电子邮件终端节点订阅主题。有关更多信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的入门

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

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

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

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

您将需要按标准 Amazon SNS 费率为退回邮件、投诉和送达通知付费。有关更多信息,请参阅 Amazon SNS 定价页面

注意

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

使用 Amazon SES API 来配置通知

您也可以使用 Amazon SES API 来配置退回邮件、投诉和送达通知。使用以下操作来配置通知:

您可以使用这些 API 操作编写用于通知的自定义前端应用程序。有关与通知相关的 API 操作的完整描述,请参阅 Amazon Simple Email Service API 参考

反馈通知故障排除

未收到通知

如果您没有收到通知,请确保您已使用终端节点订阅发送通知的主题。当您使用电子邮件端点节点订阅主题时,您会收到一封电子邮件,要求您确认订阅。在开始接收电子邮件通知之前,您必须确认订阅。有关更多信息,请参阅《Amazon Simple Notification Service 开发人员指南》中的入门

InvalidParameterValue选择主题时的 错误

如果您收到表明发生 InvalidParameterValue 错误的错误消息,请检查 Amazon SNS 主题以查看它是否使用 AWS KMS进行了加密。如果是,则必须修改 AWS KMS 密钥的策略。请参阅 先决条件 以获取示例策略。