Amazon SNS トピックが CloudWatch Events 通知を受信しないのはなぜですか?

最終更新日: 2021 年 9 月 10 日

Amazon CloudWatch Events ルールを設定して、Amazon Simple Notification Service (Amazon SNS) トピックに通知を送信します。Amazon SNS トピックがイベント通知を受け取らないのはなぜですか?

解決方法

CloudWatch Events ルールのターゲットがルールと同じ AWS リージョンにあることを確認する

ルールに関連付けるターゲットは、ルールと同じリージョンに存在する必要があります。詳細については、Amazon CloudWatch Events の開始方法を参照してください。

注: AWS リソースが存在しているリージョンを確認するには、リソースの Amazon リソースネーム (ARN) を確認します。

CloudWatch Events ルールの「Invocations」と「FailedInvocations」メトリクスで問題の原因を確認する

CloudWatch コンソールで、CloudWatch Events のルールの InvocationsFailedInvocationsメトリクスを確認します。

両方のメトリクスのためのデータポイントが存在する場合、CloudWatch Events ルール通知がターゲットを呼び出そうとしたものの、その呼び出しが失敗したことが示唆されています。この問題を解決するには、トピックにメッセージを発行するために必要な許可を CloudWatch に付与する必要があります。手順については、この記事のトピックにメッセージを発行するために必要な許可を CloudWatch に付与したことを確認するのセクションを参照してください。

存在しているのが Invocations メトリクスのデータポイントのみである場合、これは CloudWatch Events ルール通知がターゲットに到達しなかったことを意味します。この問題を解決するには、ターゲットの設定ミスを修正します。

詳細については、CloudWatch ユーザーガイドの利用可能なメトリクスの表示を参照してください。

トピックにメッセージを発行するために必要な許可を CloudWatch に付与したことを確認する

Amazon SNS トピックのリソースベースのポリシーでは、CloudWatch によるトピックへのメッセージの発行を許可する必要があります。トピックの AWS Identity and Access Management (IAM) ポリシーで必要な許可があることを確認し、必要に応じて追加します。

重要: 「events.amazonaws.com」「Service」の値としてリストされている必要があります。「sns:Publish」「Action」の値としてリストされている必要があります。

必要な許可を追加するには、My rule runs, but I don't see any messages published into my Amazon SNS topic の手順に従ってください。

CloudWatch が Amazon SNS トピックにメッセージを発行することを許可する IAM 許可ステートメントの例

{
    "Sid": "AWSEvents_ArticleEvent_Id4950650036948",
    "Effect": "Allow",
    "Principal": {
        "Service": "events.amazonaws.com"
    },
    "Action": "sns:Publish",
    "Resource": "arn:aws:sns:us-east-1:123456789012:My_SNS_Topic"
}

(サーバー側の暗号化 (SSE) がアクティブ化されているトピックの場合) トピックに必要な AWS Key Management (AWS KMS) 許可があることを確認する

Amazon SNS トピックは、カスタマーマネージドの AWS KMS キーを使用する必要があります。この KMS キーには、CloudWatch に十分なキー使用許可を付与するカスタムキーポリシーを含める必要があります。

必要な AWS KMS 許可をセットアップするには、以下の手順を実行します。

1.    CloudWatch に必要な許可が含まれた、新しいカスタマーマネージドの KMS キーを作成します

2.    先ほど作成したカスタム KMS キーを使用して、Amazon SNS トピックの SSE を設定します。

3.    CloudWatch が暗号化されたトピックにメッセージを発行することを許可する AWS KMS 許可を設定します

CloudWatch が暗号化された Amazon SNS トピックにメッセージを送信することを許可する IAM ポリシーステートメントの例

{
    "Sid": "Allow CWE to use the key",
    "Effect": "Allow",
    "Principal": {
        "Service": "events.amazonaws.com"
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
    ],
    "Resource": "*"
}

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


請求に関するサポートまたは技術サポートが必要ですか?