デッドレターキュー (DLQ) を Amazon EventBridge ルールのターゲットに関連付けて、FailedInvocations メトリクスをトラブルシューティングしようとしています。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
標準の Amazon SQS キューを作成する
Amazon Simple Queue Service (Amazon SQS) コンソールを使用して SQS キューを作成します。
次の手順を実行します。
- Amazon SQS コンソールを開きます。
- [キューを作成] を選択します。
- [タイプ] で [標準] キュータイプを選択します。
- キューの名前を入力します (例: myEventBridgeDLQ)。
- [キューを作成] を選択します。
SQS キューを EventBridge ルールのターゲットに関連付ける
次の手順を実行します。
- EventBridge コンソールを開きます。
- ナビゲーションペインで [ルール] を選択します。
- ターゲットの呼び出しに失敗した EventBridge ルールを選択し、[編集] を選択します。
- ナビゲーションペインで [ターゲットを選択] を選択し、[その他の設定] を選択します。
- [デッドレターキュー] で [現在の AWS アカウントの Amazon SQS キューを選択してデッドレターキューとして使用する] を選択します。次に、[SQS キューを選択] ドロップダウンリストで該当する SQS キューを選択します。
- [スキップしてレビュー、更新に進む] を選択します。
- [ルールを更新] を選択します。
EventBridge には、呼び出し失敗のイベントを SQS キューに送信するためのアクセス許可が必要です。EventBridge コンソールを使用して DLQ を EventBridge ルールのターゲットに関連付ける場合、EventBridge は自動的にアクセス許可を追加します。AWS CLI、AWS SDK、または AWS CloudFormation を使用する場合は、必要なアクセス許可を付与するリソースベースのポリシーを手動で作成する必要があります。set-queue-attributes コマンドを実行するとポリシーを変更できます。
重要: SQS キューを暗号化した場合は、カスタマーマネージドキーを作成する必要があります。また、AWS Key Management Service (AWS KMS) キーポリシーに次のアクセス許可を含める必要があります。
{ "Sid": "Allow EventBridge to use the key",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": "*"
}
詳細については、「AWS KMS のアクセス許可を設定する」を参照してください。
EventBridge ルールに合致するイベントを EventBridge のイベントバスに送信する
イベントルールに一致するイベントをデフォルトのイベントバスに送信するには、AWS サービスイベント用の AWS 環境を変更します。EventBridge ルールがターゲットの呼び出しに失敗した場合、EventBridge は失敗した全てのイベントを DLQ に送信します。
イベントルールに一致するイベントをカスタムイベントバスに送信するには、PutEvents API または put-events コマンドを使用します。
EventBridge ルールに関する FailedInvocations メトリクスを確認するには、次の手順を実行してください。
- EventBridge コンソールを開きます。
- 該当する EventBridge ルールを選択し、[モニタリング] タブを選択します。
- MatchedEvents と TriggeredRules を探して、そのルールがイベントと一致していることを確認します。
- Invocations および FailedInvocations を参照し、そのルールがターゲットの呼び出しを試行したことを確認します。
注: メトリクスにデータポイントがない場合は、ルールパターンが正しく設定されていることを確認してください。
EventBridge が DLQ に送信した、失敗に関するイベントを取得する
次の手順を実行します。
- EventBridge コンソールを開きます。
- ナビゲーションペインで [ルール] を選択します。
- 呼び出しに失敗した EventBridge ルールを選択します。
- [ターゲット] タブを選択し、該当する DLQ を選択します。
- [メッセージの送受信] を選択し、SQS コンソールで [メッセージの送受信] ページを開きます。
- [メッセージをポーリング] を選択します。
注: [メッセージ] セクションには、受信したメッセージのリストが表示されます。リストには、各メッセージのメッセージ ID、送信日、サイズ、受信数が表示されます。
- いずれかのメッセージを選択します。次に、[詳細を表示] を選択すると、EventBridge がターゲットに送信できなかったイベントが表示されます。
- [属性] タブを選択すると、属性 ERROR_CODE、ERROR_MESSAGE、RULE_ARN、TARGET_ARN が表示されます。
注: ERROR_CODE 属性と ERROR_MESSAGE 属性には、イベント配信が失敗した理由が表示されます。
関連情報
Amazon EventBridge ルールに関する問題をトラブルシューティングする方法を教えてください
Amazon SQS のアクセス許可