跳至内容

为什么我无法收到来自我的 Amazon SNS 主题的电子邮件通知?

2 分钟阅读
0

我没有收到来自我的 Amazon Simple Notification Service (Amazon SNS) 主题的电子邮件通知。

解决方法

验证您的电子邮件端点状态是否为“已确认”

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

要检查您的电子邮件端点的状态,请使用 Amazon SNS 控制台或 AWS CLI。

Amazon SNS 控制台

完成以下步骤:

  1. 打开 Amazon SNS 控制台
  2. 在导航窗格中,选择 Topics(主题),然后选择您的主题。
  3. Subscriptions(订阅)部分中,在 Endpoint(端点)列中找到您的电子邮件端点。
  4. Status(状态)列中,检查状态是否为 Confirmed(已确认)。
  5. 如果状态不是 Confirmed(已确认),请在 Amazon SNS 控制台上手动确认订阅。如果您未收到确认电子邮件,请完成以下部分中的步骤。
  6. 要重新请求确认电子邮件,请选择包含您的端点的订阅,然后选择 Request confirmation(请求确认)。

AWS CLI

运行 list-subscriptions-by-topic 命令:

aws sns list-subscriptions-by-topic \
    --topic-arn arn:aws:sns:us-west-2:123456789012:your-topic

**注意:**请将 arn:aws:sns:us-west-2:123456789012:your-topic 替换为您的 Amazon SNS 主题的 Amazon 资源名称 (ARN)。

输出示例:

{
    "Subscriptions": [
        {
            "Owner": "123456789012",
            "Endpoint": "my-email@example.com",
            "Protocol": "email",
            "TopicArn": "arn:aws:sns:us-west-2:123456789012:your-topic",
            "SubscriptionArn": "arn:aws:sns:us-west-2:123456789012:my-topic:8a21d249-4329-4871-acc6-7be709c6ea7f"
        }
    ]
}

**注意:**如果 Endpoint(端点)列中没有电子邮件端点,则表明该端点已被删除。

检查电子邮件地址是否可以接收来自外部联系人的电子邮件

要检查问题是否仅与 Amazon SNS 相关,请从外部提供商向您的目标电子邮件地址发送一封测试电子邮件。测试电子邮件可帮助您确定允许的外部来源流量类型。组织内的邮箱可能仅限于内部流量。

如果邮箱收到测试电子邮件,请完成以下部分中的步骤。

检查是否存在防火墙、垃圾邮件筛选器、阻止程序或筛选策略

联系您的电子邮件管理员,以检查防火墙或垃圾邮件筛选器是否阻止了 no-reply@sns.amazonaws.com 地址。最佳做法是将 no-reply@sns.amazonaws.com 地址添加到您的邮箱允许列表中。有关详细信息,请参阅“Amazon SNS 常见问题”的传输部分中的“要接收 Amazon SNS 的通知,订阅用户是否需要对其电子邮件设置进行特别配置?”。

检查邮箱规则中是否存在阻止您的 SNS 主题电子邮件的显式 Deny(拒绝)操作。此外,请检查电子邮件是否已路由到邮箱中的特定文件夹。

设置身份验证以取消订阅,以便用户不会取消订阅您的 SNS 主题电子邮件的所有收件人。您必须具有所需的权限才能取消订阅您的电子邮件端点。您可以使用 Amazon SNS 控制台或 AWS CLI 向经过身份验证的用户确认订阅。

要检查订阅上是否存在筛选策略,请完成以下步骤:

  1. 打开 Amazon SNS 控制台
  2. 在导航窗格中,选择 Subscriptions(订阅)。
  3. 在搜索框中,输入电子邮件端点订阅的电子邮件地址或 SNS 主题,然后选择您的订阅。
  4. 对于您的电子邮件端点,选择 Subscription filter policy(订阅筛选策略)选项卡。
  5. Subscription filter policy(订阅筛选策略)下,查找筛选策略。

向端点发送消息时,Amazon SNS 会将消息属性与筛选策略中的属性进行比较。如果消息属性与筛选策略属性不匹配,则电子邮件端点不会接收该消息。

确认未使用默认的 AWS KMS 密钥设置

Amazon SNS 允许对主题进行静态加密。如果您使用默认的 AWS Key Management Service (AWS KMS) 密钥进行加密,则 AWS 服务无法向 SNS 主题发布消息。Amazon SNS 的 AWS KMS 密钥策略不允许 AWS 服务执行 kms:Decryptkms:GenerateDataKey API 调用。由于 AWS 管理此密钥,因此您无法手动编辑该策略。

如果您对 Amazon SNS 主题进行加密,请改用客户自主管理型密钥。以下客户自主管理型密钥策略包含执行 kms:Decryptkms:GenerateDataKey 的权限:

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

有关详细信息,请参阅配置 AWS KMS 权限