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