Amazon EventBridge の再試行ポリシー設定を変更し、失敗した呼び出しに対するデッドレターキュー (DLQ) を設定したいです。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
EventBridge が再試行を行う期間の長さを変更する
EventBridge は、エクスポネンシャルバックオフとジッター、あるいはランダムな遅延を使用してイベントを 24 時間、最大 185 回再送信します。呼び出しの失敗を防ぐには、ターゲットの再試行ポリシー設定で EventBridge が再試行する期間と回数を変更します。
注: EventBridge は、5## または 4## の HTTP ステータスコードが返された場合、最大 24 時間再試行します。
EventBridge コンソールを使用してターゲットの再試行ポリシーを設定するには、次の手順を実行します。
- EventBridge コンソールを開きます。
- 該当する EventBridge ルールを選択します。
- [ターゲット] タブを選択し、[編集] を選択します。
- [追加設定] タブを展開します。
- [再試行回数] にカスタム値を入力します。
注: 複数のターゲットを持つイベントルールでは、ターゲットごとに個別に再試行ポリシーを設定する必要があります。
AWS CLI の put-targets コマンドまたは RetryPolicy API を実行しても再試行ポリシーを設定できます。
EventBridge は、イベントエラーを複数の方法で処理します。例えば、ターゲットに必要なアクセス許可がない場合や、ターゲットが存在しない場合、EventBridge はイベントを配信しない場合があります。EventBridge がイベントを再送信しようとしない場合もあります。代わりに、EventBridge はそのイベントをドロップしたり、設定した DLQ に送信したりすることがあります。
EventBridge DLQ を設定する
配信障害によるイベントの損失を防ぐには、EventBridge DLQ を設定します。DLQ は失敗したすべてのイベントを受信し、後で処理します。
注: ターゲットの DLQ を設定する前に、Amazon Simple Queue Service (Amazon SQS) キューを作成する必要があります。Amazon SQS キューポリシーで、EventBridge ルールがキューを呼び出すのに必要なアクセス許可を追加します。Amazon SQS キューを暗号化する場合は、AWS Key Management Service (AWS KMS) キーポリシーにアクセス許可 Decrypt および GenerateDataKey を追加します。
DLQ を設定するには、次の手順を実行します。
- EventBridge コンソールを開きます。
- 該当する EventBridge ルールを選択します。
- [ターゲット] タブを選択し、[編集] を選択します。
- [追加設定] タブを展開します。
- [デッドレターキュー] セクションで、DLQ SQS が同じ AWS アカウントにあるか、別のアカウントにあるかに応じてオプションを選択します。
AWS CLI の put-targets コマンドを実行しても DLQ を設定できます。DeadLetterConfig パラメータには、SQS キューの ARN を使用します。
DLQ からエラーの詳細を取得する
イベントルールによりメッセージが DLQ に送信されたことを確認するには、InvocationSentToDLQ メトリクスを確認します。
メッセージがある場合は、次の手順を実行します。
- SQS コンソールを開きます。
- イベントルールの DLQ として使用するキューを選択します。
- [メッセージの送受信] を選択し、[メッセージのポーリング] を選択します。
- [メッセージ] セクションで該当するメッセージを開きます。
- [属性] を選択し、EventBridge がターゲットにメッセージを配信できなかった理由を特定します。
注: [本文] タブのデータは、イベント配信が失敗しない場合に EventBridge がターゲットに送信するペイロードです。
関連情報
Monitoring Amazon EventBridge (Amazon EventBridge を監視する)
EventBridge metrics (EventBridge のメトリクス)