我创建的 AWS 成本异常检测功能监控器不会向我的 Amazon Simple Notification Service (Amazon SNS) 主题发送通知。
简述
当成本异常检测功能监控器检测到异常时,它会向 Amazon SNS 主题发布通知。然后,Amazon SNS 通常通过电子邮件将通知传送到订阅的端点。由于以下原因,通知可能会无法到达端点:
- 成本异常检测功能通知未到达 SNS 主题。当您激活该主题的加密时,缺少主题访问策略或 KMS 密钥策略的权限可能会导致这种情况。
- SNS 主题无法向订阅的端点传送通知。
解决方法
检查 SNS NumberOfMessagesPublished 指标
检查 SNS NumberOfMessagesPublished 指标,以确认异常检测历史记录中的事件是否有已发布通知的对应数据点。此指标表明您的主题是否已成功发布通知。
SNS NumberOfMessagesPublished 指标没有数据点
确认您已向成本异常检测功能授予将消息发布到您的主题所需的权限。
以下 SNS 主题访问策略示例允许成本异常检测功能将消息发布到 Amazon SNS 主题:
{
"Sid": "E.g., AWSAnomalyDetectionSNSPublishingPermissions",
"Effect": "Allow",
"Principal": {
"Service": "costalerts.amazonaws.com"
},
"Action": "SNS:Publish",
"Resource": "your topic ARN"
}
有关详细信息,请参阅 Creating an Amazon SNS topic for anomaly notifications(为异常通知创建 Amazon SNS 主题)。
SNS NumberOfMessagesPublished 指标有数据点
要对此问题进行故障排除,请完成以下步骤:
- 验证您订阅的端点是否处于 Confirmed(已确认)状态。
- 确认 NumberOfNotificationsDelivered 和 NumberOfNotificationsFailed 指标通知已发布,并已成功传送到端点。
- 检查订阅的端点上是否有筛选策略。检查 NumberOfNotificationsFilteredOut 指标,以验证订阅筛选策略是否已筛选掉消息。如果消息已被筛选掉,则参阅如何解决 Amazon SNS 中的订阅筛选策略问题?
- 检查主题的订阅端点是否为电子邮件协议。检查 NumberOfNotificationsDelivered 指标是否显示该主题已成功传送通知,但通知未到达电子邮件收件箱。有关详细信息,请参阅为什么我无法收到来自我的 Amazon SNS 主题的电子邮件通知?
确认您已激活服务器端加密
确认您已在 Amazon SNS 主题上激活服务器端加密。如果您已激活服务器端加密,请检查您的权限要求。确保成本异常检测功能为您的密钥授予所需的 AWS Key Management Service (AWS KMS) 权限。
您的 Amazon SNS 主题必须使用客户管理的 AWS KMS 密钥。此 KMS 密钥必须包含一个自定义密钥策略,以允许成本异常检测功能执行 kms:GenerateDataKey* 和 kms:Decrypt 操作。有关详细信息,请参阅 Configuring AWS KMS permissions(配置 AWS KMS 权限)。
以下示例 IAM 策略声明允许 AWS 成本异常检测功能将消息发布到加密的 Amazon SNS 主题:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": {
"Service": "costalerts.amazonaws.com"
},
"Action": [
"kms:GenerateDataKey*",
"kms:Decrypt"
],
"Resource": "*"
}]
}
启用传送状态日志
启用 Amazon SNS 主题传送状态日志以进一步对问题进行故障排除。日志中的 ProviderResponse 属性解释了传送失败的原因。
注意: 要记录每条消息的传送状态,请将成功采样率设置为 100%。如果您使用较低的百分比,则 SNS 仅为指定百分比的已传送或传送失败的消息生成传送日志。