EventBridge のイベントストリームでは、イベント配信の失敗を処理するために、リトライポリシー、フォールトトレランスポリシー、およびデッドレターキュー (DLQ) を使用します。ターゲットへの配信が失敗した場合、EventBridge は設定されたリトライポリシーに基づいて再試行を行います。すべての再試行が使い果たされた後は、フォールトトレランスポリシーにより、失敗したイベントをスキップするか、ストリームをブロックするかが決定されます。配信できないイベントは、後続の調査のために DLQ にルーティングしてください。
以下の図は、これらの 3 つのポリシー間の相互作用を示しています:
イベント配信が失敗
|
v
リトライポリシー
(バックオフまたは指数関数的減衰)
|
すべての再試行が使い果たされましたか?
/ \
いいえ はい
| |
再試行 フォールトトレランスポリシー
を続ける / \
許可される 禁止される
| |
DLQ が設定されていますか? ストリームがブロックされ、
/ \ タスクステータス → Ready
はい いいえ
| |
DLQ へ送信 イベントを破棄リトライポリシー
リトライポリシーは、配信失敗後に EventBridge が再試行を行う方法を制御します。各イベントストリームでは、以下の 2 種類のリトライポリシーをサポートしています:
| ポリシー | 最大再試行回数 | 再試行間隔 | 最大持続時間 | デフォルト |
|---|---|---|---|---|
| バックオフリトライ | 3 | ランダム(連続する試行間で 10~20 秒) | — | はい |
| 指数関数的減衰リトライ | 176 | 1 秒から開始し、毎回倍増(最大 512 秒まで) | 1 日 | いいえ |
バックオフリトライ
バックオフリトライはデフォルトポリシーです。EventBridge は失敗したイベントを最大 3 回まで再試行し、連続する試行間の間隔は 10~20 秒のランダム値となります。一時的な障害が短期間で解消されると予期される場合に、このポリシーをご利用ください。
指数関数的減衰リトライ
指数関数的減衰リトライは、回復に時間がかかる可能性のあるターゲット向けに、より長い再試行ウィンドウを提供します。EventBridge は失敗したイベントを最大 176 回、最大 1 日間の期間にわたって再試行します。再試行間隔は毎回倍増し、上限は 512 秒です:
1 秒、2 秒、4 秒、8 秒、16 秒、32 秒、64 秒、128 秒、256 秒、512 秒間隔が 512 秒に達した後は、残りの 167 回の再試行も 512 秒間隔で継続されます。
非リトライ可能エラー
無効なリソース構成などのエラーにより再試行が実行できない場合、リトライポリシーやフォールトトレランスポリシーに関係なく、タスクステータスは Start Failed に変更されます。これらのエラーは、根本原因の修正に手動介入が必要であるため、EventBridge では再試行されません。
フォールトトレランスポリシー
フォールトトレランスポリシーは、すべての再試行が使い果たされた後でも依然として失敗しているイベントを EventBridge がどのように処理するかを制御します。各イベントストリームでは、以下の 2 種類のフォールトトレランスポリシーをサポートしています:
| ポリシー | 再試行が使い果たされた後の動作 | 後続イベントへの影響 |
|---|---|---|
| フォールトトレランス許可 | イベントは DLQ(設定済みの場合)へ送信されるか、破棄されます | 処理は継続されます |
| フォールトトレランス禁止 | タスクステータスが Ready | 問題が解決されるまで処理がブロックされます |
フォールトトレランス許可
フォールトトレランスが許可されている場合、配信失敗によってイベント処理がブロックされることはありません。すべての再試行が使い果たされた後、EventBridge はイベントを DLQ へ送信するか破棄し、その後の処理を継続します。
イベントの損失が許容される場合、または失敗したイベントをキャプチャするための DLQ が既に設定されている場合に、このポリシーを選択してください。
フォールトトレランス禁止
フォールトトレランスが禁止されている場合、すべての再試行が使い果たされた後は配信失敗によってイベント処理がブロックされます。タスクステータスは Ready に変更され、問題が解決されるまで、それ以降のイベントは処理されません。
すべてのイベントを確実に配信する必要があり、イベント損失よりも処理の一時停止を優先する場合に、このポリシーを選択してください。
デッドレターキュー
デッドレターキュー (DLQ) は、すべての再試行が使い果たされた後に配信に失敗したイベントを保存します。タスクに対して DLQ を有効化すると、EventBridge はイベントを破棄する代わりに、生のイベントデータを DLQ へ送信します。DLQ 機能はデフォルトで無効になっています。
対応する DLQ ターゲット
以下のサービスが DLQ ターゲットとしてサポートされています:
| サービス | 説明 |
|---|---|
| ApsaraMQ for RocketMQ | メッセージキュー・サービス |
| Simple Message Queue (旧称:MNS) | 軽量メッセージキュー・サービス |
| ApsaraMQ for Kafka | Kafka 互換メッセージキュー・サービス |
| EventBridge イベントバス | 失敗したイベントを別のイベントバスへルーティングして、さらに処理を行います |
DLQ を有効化するタイミング
以下の目的で DLQ を有効化してください:
配信に失敗したイベントを検査およびデバッグする場合
根本原因を修正した後に失敗したイベントを再処理する場合
監査のためにすべての配信失敗を記録する場合
フォールトトレランス許可 ポリシーを DLQ なしで使用した場合、再試行が使い果たされた後に失敗したイベントは永久に破棄されます。データ損失を防ぐためには、フォールトトレランスを有効化する前に必ず DLQ を設定してください。