AWS コマンドライン (AWS CLI) または AWS CloudFormation を使用して作成した Amazon EventBridge ルールが正しく動作しない理由をトラブルシューティングしたいです。
簡単な説明
ターゲットにアクセスしたり、呼び出したりするためのアクセス許可を Amazon EventBridge ルールに付与するには、AWS Identity and Access Management (AWS IAM) ポリシーまたはリソースベースのポリシーが必要です。
AWS CLI、API、または AWS CloudFormation を使用して EventBridge ルールを作成または更新する場合は、以下のベストプラクティスを確認してください。
- EventBridge コンソールを使用して EventBridge ルールを作成または変更すると、EventBridge はターゲットのポリシーに適切なアクセス許可を自動的に追加します。
- AWS CLI、SDK、または AWS CloudFormation を使用して EventBridge ルールを作成または更新する場合、ターゲットポリシーのアクセス許可を手動で適用する必要があります。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、最新バージョンの AWS CLI を使用していることを確認してください。
EventBridge は、ターゲットリソースへのルールのアクセスを管理するために、リソースベースのポリシーと ID ベースのポリシーという 2 つのアクセス許可モデルを使用します。詳細については、「リソースへのアクセスの管理」を参照してください。
EventBridge ルールメトリクスを確認して、呼び出しの失敗を確認します。
次の手順を実行します。
- Amazon EventBridge コンソールを開きます。
- 左側のナビゲーションペインから、[バス] で [ルール] を選択します。
- ルール名をクリックします。
- ルール詳細にある、[監視] タブをクリックします。
- ダッシュボードで適切な時間を選択して、FailedInvocations メトリクスを確認します。FailedInvocations は永続的な障害を示しており、アクセス許可が誤っているか、ターゲットが正しく構成されていないことが原因である可能性があります。詳細については、「EventBridge メトリクス」を参照してください。
EventBridge ルールに、ターゲットを呼び出すために必要なアクセス許可があることを確認します。
以下のリンクを参考に、EventBridge ルールに設定されたターゲットに必要なアクセス許可があることを確認してください。
リソースベースのポリシー
次のターゲットは、リソースベースのポリシーを使用します。
- AWS Lambda
- API Gateway
- Amazon Simple Notification Service (Amazon SNS)
- Amazon Simple Queue Service (Amazon SQS)
- Amazon CloudWatch ロググループ
ターゲットとして CloudWatch ログのルールを作成する方法については、「EventBridge ルールのターゲットとして使用する CloudWatch ロググループを追加する方法を教えてください」を参照してください。
**ID ベースのポリシー **
これらのターゲットには、適切な IAM ポリシーアクセス許可が必要です。詳細については、「EventBridge が IAM ロールを使用してターゲットにアクセスするために必要なアクセス許可」を参照してください。
注: IAM ポリシーの追加に関する詳細については、「IAM D アクセス許可の追加と削除」を参照してください。
以下のポリシーを参照してください。
-
Amazon API の宛先
-
Systems Manager
-
Step Functions ステートマシン
-
ECS タスク
-
Amazon Elastic Compute Cloud (Amazon EC2)
-
Kinesis ストリーム
-
Amazon SageMaker Pipeline
注: ターゲットとして SageMaker Pipeline のルールを作成する方法に関する詳細については、「AWS CLI を使用して EventBridge ルールを作成する」を参照してください。
クロスアカウント、クロスリージョン、イベントバスターゲット用のポリシー
ターゲットがクロスアカウント、クロスリージョン、または別のイベントバスの場合、リソースベースのポリシーに関して、「Amazon EventBridge イベントバスのアクセス許可」を参照してください。クロスアカウントまたはクロスリージョンルールの設定については、「EventBridge でのクロスアカウントおよびクロスリージョンイベントのステップバイステップガイド」を参照してください。
API Gateway ターゲットポリシー
- API Gateway ターゲットでは、リソースロールまたは IAM ロールのいずれかを使用できます。
Amazon SQS デッドレターキューをターゲットに追加します
必要なポリシーを追加した後に EventBridge ルールのターゲットから呼び出しの失敗が報告された場合は、Amazon SQS デッドレターキュー (DLQ) を使用し、イベントのメタデータを保存するターゲットにします。保存されたデータを使用して、Eventbridge ルールがイベントの呼び出しに失敗した理由を分析し、設定したターゲットに配信します。ターゲットを検証する方法の詳細については、「Amazon EventBridge ルールに関する問題をトラブルシューティングする方法を教えてください」を参照してください。
関連情報
Lambda 関数が EventBridge ルールによってトリガーされなかった理由を知りたいです
Amazon EventBridge のトラブルシューティング