我没有收到来自我的 Amazon Simple Notification Service (Amazon SNS) 主题的电子邮件通知。
解决方法
验证您的电子邮件端点状态是否为“已确认”
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
要检查您的电子邮件端点的状态,请使用 Amazon SNS 控制台或 AWS CLI。
Amazon SNS 控制台
完成以下步骤:
- 打开 Amazon SNS 控制台。
- 在导航窗格中,选择 Topics(主题),然后选择您的主题。
- 在 Subscriptions(订阅)部分中,在 Endpoint(端点)列中找到您的电子邮件端点。
- 在 Status(状态)列中,检查状态是否为 Confirmed(已确认)。
- 如果状态不是 Confirmed(已确认),请在 Amazon SNS 控制台上手动确认订阅。如果您未收到确认电子邮件,请完成以下部分中的步骤。
- 要重新请求确认电子邮件,请选择包含您的端点的订阅,然后选择 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 向经过身份验证的用户确认订阅。
要检查订阅上是否存在筛选策略,请完成以下步骤:
- 打开 Amazon SNS 控制台。
- 在导航窗格中,选择 Subscriptions(订阅)。
- 在搜索框中,输入电子邮件端点订阅的电子邮件地址或 SNS 主题,然后选择您的订阅。
- 对于您的电子邮件端点,选择 Subscription filter policy(订阅筛选策略)选项卡。
- 在 Subscription filter policy(订阅筛选策略)下,查找筛选策略。
向端点发送消息时,Amazon SNS 会将消息属性与筛选策略中的属性进行比较。如果消息属性与筛选策略属性不匹配,则电子邮件端点不会接收该消息。
确认未使用默认的 AWS KMS 密钥设置
Amazon SNS 允许对主题进行静态加密。如果您使用默认的 AWS Key Management Service (AWS KMS) 密钥进行加密,则 AWS 服务无法向 SNS 主题发布消息。Amazon SNS 的 AWS KMS 密钥策略不允许 AWS 服务执行 kms:Decrypt 和 kms:GenerateDataKey API 调用。由于 AWS 管理此密钥,因此您无法手动编辑该策略。
如果您对 Amazon SNS 主题进行加密,请改用客户自主管理型密钥。以下客户自主管理型密钥策略包含执行 kms:Decrypt 和 kms:GenerateDataKey 的权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "service.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey*",
"kms:Decrypt"
],
"Resource": "*"
}
]
}
有关详细信息,请参阅配置 AWS KMS 权限。