作成したコスト異常検出モニターが、自分の 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 キー管理 (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 トピックからの E メール通知を受け取ることができないのはなぜですか?」を参照してください?
- メッセージがサブスクライブされている他のエンドポイントに届かない場合があります:
- HTTP
- Amazon Kinesis Data Firehose
- AWS Lambda
- プラットフォームアプリケーションエンドポイント
- Amazon Simple Queue Service
- ショートメッセージサービス (SMS)
Amazon SNS トピックの配信ステータスログを有効にして、問題をさらにトラブルシューティングします。ログの ** ProviderResponse** 属性には、配信失敗の原因が説明されています。
注: 各メッセージ配信ステータスが確実に記録されるようにするには、成功サンプルレートを 100% に設定します。低い割合を使用すると、SNS は配信されたメッセージまたは失敗したメッセージの指定された割合のみの配信ログを生成します。