使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何对未收到 AWS 成本异常检测发出的通知的 Amazon SNS 主题进行故障排除?

1 分钟阅读
0

我创建的成本异常检测监控器不会向我的 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:GenerateDataKeykms: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 指标已填充,但您仍未收到通知

执行以下步骤来解决问题:

  1. 验证您订阅的端点是否处于“已确认”状态
  2. 确认 NumberOfNotificationsDeliveredNumberOfNotificationsFailed 指标通知已发布,并已成功发送到端点。
  3. 检查订阅的端点上是否有筛选策略。查看 NumberOfNotificationsFilteredOut 指标,看看消息是否被筛选掉。如果消息被筛选掉,则参阅如何解决 Amazon SNS 中的订阅筛选策略问题?
  4. 检查主题的订阅端点是否为电子邮件协议。检查 NumberOfNotificationsDelivered 指标是否指示通知已成功发送但未到达电子邮件收件箱。有关详细信息,请参阅为什么我无法收到来自我的 Amazon SNS 主题的电子邮件通知?
  5. 消息可能无法到达以下其他订阅的端点:
  • HTTP
  • Amazon Kinesis Data Firehose
  • AWS Lambda
  • 平台应用程序端点
  • Amazon Simple Queue Service
  • 短消息服务(SMS)

打开 Amazon SNS 主题传送状态日志以进一步解决问题。日志中的 ProviderResponse 属性解释了传送失败的原因。

**注意:**要确保记录每条消息的传送状态,请将成功采样率设置为 100%。如果您使用较低的百分比,则 SNS 仅为指定百分比的已传送或失败消息生成传送日志。

AWS 官方
AWS 官方已更新 1 年前