CloudWatch アラームトリガーの SNS 通知を受信しなかったのはなぜですか?

最終更新日: 2020 年 2 月 5 日

アラームの状態が変化したときに Amazon Simple Notification Service (Amazon SNS) トピックを介して通知を送信する Amazon CloudWatch アラームを作成しました。けれども、CloudWatch アラームの状態が変わり、SNS 通知を受信しなくなりました。CloudWatch アラームトリガーの SNS 通知を受信しなかったのはなぜですか?

解決方法

SNS 通知の配信は、SNS トピックの設定と CloudWatch アラームによって異なります。SNS 通知が期待どおりに受信できない理由を判断するには、CloudWatch アラームの履歴を確認して、トリガーアクションのステータスをチェックします。

トリガーアクションが SNS アクセスポリシーの制限のために失敗した場合:

  • CloudWatch アラーム履歴には、次のようなメッセージが表示されます。Failed to execute action arn:aws:sns:<region>:<account-id>:<topic-name>。受信したエラー: "Resource: arn:aws:cloudwatch:<region>:<account-id>:alarm:<alarm-name> is not authorized to perform: SNS:Publish on resource: arn:aws:sns:<region>:<account-id>:<topic-name>
  • SNS は、アクセスポリシーを使用してトピックにメッセージを発行できるソースを制限します。アクセス許可エラーが発生した場合、SNS アクセスポリシーの [Statement] セクションに次のアクセス許可を追加する必要があります。この更新により、CloudWatch アラームサービスに、SNS トピックにメッセージを発行するアクセス許可が付与されます。
    注: <region> はこの通知の対象リージョンに置き換え、<account-id> はアカウント ID に置き換え、<topic name> は SNS トピック名に置き換えます。
{
    "Sid": "Allow_Publish_Alarms",
    "Effect": "Allow",
    "Principal":
    {
        "Service": [
            "cloudwatch.amazonaws.com"
        ]
    },
    "Action": "sns:Publish",
    "Resource": "arn:aws:sns:<region>:<account-id>:<topic-name>"
}

SNS トピックの暗号化が原因でトリガーアクションが失敗した場合:

  • CloudWatch アラーム履歴には、次のようなメッセージが表示されます。Failed to execute action arn:aws:sns:<region>:<account-id>:<topic-name>。受信したエラー: "null (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException;)"
  • SNS では、トピックの保管時の暗号化が許可されています。デフォルトの AWS Key Management Service (KMS) キー「alias/aws/sns」がこの暗号化に使用されている場合、CloudWatch アラームはメッセージを SNS トピックに発行できません。SNS のデフォルトの AWS KMS キーのキーポリシーでは、CloudWatch アラームが「kms:Decrypt」と「kms:GenerateDataKey」API 呼び出しを実行することを許可していません。このキーは AWS の管理下にあるため、ポリシーを手動で編集することはできません。
  • SNS トピックを保存時に暗号化する必要がある場合は、顧客管理型 CMK を使用できます。顧客管理型 CMK には、キーポリシーのステートメントセクションに次のアクセス許可が含まれている必要があります。このアクセス許可により、CloudWatch アラームは暗号化された SNS トピックにメッセージを発行できます。
{
    "Sid": "Allow_CloudWatch_for_CMK",
    "Effect": "Allow",
    "Principal": {
        "Service":[
            "cloudwatch.amazonaws.com"
        ]
    },
    "Action": [
        "kms:Decrypt","kms:GenerateDataKey"
    ],
    "Resource": "*"
}

トリガーアクションが成功した場合:

注: CloudWatch は、指定したアクションをテストまたは検証しません。また、存在しないアクションを呼び出そうとしたために発生した Amazon EC2 Auto Scaling または Amazon SNS エラーも検出しません。アクションが存在することを確認してください。


この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合