Amazon EventBridge ルールで Amazon Simple Notification Service (Amazon SNS) トピックに通知を送信する設定を行いましたが、Amazon SNS トピックはイベント通知を受信できませんでした。
解決策
EventBridge ルールのターゲットがルールと同じリージョンに配置されていることを確認する
ルールに関連付けるターゲットは、ルールと同じ AWS リージョンに配置する必要があります。
注: AWS リソースが置かれたリージョンを確認するには、そのリソースの Amazon リソースネーム (ARN) を参照してください。
EventBridge ルールのメトリクス「Invocations」および「FailedInvocations」を参考に、問題を特定する
Amazon CloudWatch コンソールを使用して EventBridge ルールのメトリクス Invocations および FailedInvocations を確認します。、
両方のメトリクスに関するデータポイントがある場合、EventBridge ルール通知はターゲットを呼び出そうとしたものの、その呼び出しが失敗したことを示します。この問題を解決するには、トピックにメッセージを発行するために必要なアクセス許可を EventBridge に付与する必要があります。手順については、この記事の「トピックにメッセージを発行するために必要なアクセス許可を EventBridge に付与したことを確認する」セクションを参照してください。
Invocations メトリクスのみにデータポイントがある場合、EventBridge ルールの通知はターゲットに到達していません。この問題を解決するには、ターゲットのルールを再構成します。
トピックにメッセージを発行するために必要な権限が EventBridge に付与されていることを確認する
Amazon SNS トピックのリソースベースポリシーは、EventBridge がメッセージをトピックに発行することを許可する必要があります。トピックの AWS Identity and Access Management (IAM) ポリシーをレビューし、必要な権限が含まれていることを確認します。ポリシーに必要なアクセス許可が含まれていない場合は、追加してください。
重要: Service 値には events.amazonaws.com、Action 値には sns:Publish を含める必要があります。
EventBridge に 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"
}
実行ロールが、EventBridge にターゲットへの発行を許可していることを確認する
EventBridge ルールのターゲットに割り当てられた IAM 実行ロールには、EventBridge サービスとの信頼関係が必要です。ロールの信頼ポリシーには、信頼されたエンティティとして EventBridge (events.amazonaws.com) が含まれていることを確認します。信頼ポリシーに必要な権限が含まれていない場合は、信頼ポリシーを更新し、EventBridge にロールを引き受ける権限を付与します。
EventBridge にターゲットの実行ロール引き受けを許可する IAM 信頼関係ステートメントの例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "ACCOUNT-ID",
"aws:SourceArn": "EVENTBRIDGE-RULE-ARN"
}
}
}
]
}
重要: Service 値には events.amazonaws.com、Action 値には sts:AssumeRole を含めてください。ACCOUNT-ID を AWS アカウント ID に、EVENTBRIDGE_RULE_ARN を ARN に置き換えてください。
(SSE が有効なトピック対象) トピックに必要な AWS KMS 権限があることを確認します。
Amazon SNS トピックは、AWS Key Management Service (AWS KMS) のカスタマーマネージドキーを使用する必要があります。この AWS KMS キーには、EventBridge がキーを使用するためのアクセス許可を付与するカスタムキーポリシーが必要です。
必要な AWS KMS 権限を設定するには、次の手順を実行します。
- 新しいカスタマーマネージドキーを作成します。EventBridge (events.amazonaws.com) に必要な権限が含まれていることを確認してください。
- カスタマー管理キーを使用して Amazon SNS トピックにサーバー側暗号化 (SSE) を設定します。
- AWS KMS のアクセス許可を設定し、EventBridge が暗号化されたトピック (events.amazonaws.com) にメッセージを発行できるようにします。
EventBridge に暗号化 Amazon SNS トピックへのメッセージ発行を許可する IAM ポリシーステートメントの例:
{ "Sid": "Allow CWE to use the key",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey*"
],
"Resource": "*"
}