View a markdown version of this page

再試行ポリシーとデッドレターキュー - Amazon EventBridge

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

再試行ポリシーとデッドレターキュー

ターゲット呼び出しが失敗すると、EventBridge RetryPolicyは、デフォルトで 5 回または 300 秒の 2 つの制限のいずれかに達するまで再試行し、 の Amazon SQS キューにレコードを書き込みますOnFailureConfiguration.Arn。サブスクライバーを作成するときに両方を設定します。デッドレターキューがない場合、再試行を使い果たすイベントはドロップされ、唯一のトレースは EventsDroppedメトリクスです。

再試行の制限

配信は、最初に到達した制限で停止します。

制限Rangeデフォルト
MaxRetryAttempts0~1855
MaxEventAgeInSeconds60~86,400300

デフォルトは、カスタムイベントバス - クラシックターゲットの 24 時間および 185 回の試行よりも短くなります。1 日の再試行に依存する移行された設計は、明示的に 86,400 MaxEventAgeInSecondsに設定する必要があります。そうしないと、ターゲットの停止中に 5 分以上失敗するイベントは、遅延配信されるのではなく、デッドレターキューに送られます。FIFO サブスクライバーの場合、失敗したイベントは再試行されている限りグループ内の後続のイベントをブロックするため、長い再試行ウィンドウはレイテンシーの順序に置き換えられます。

デッドレターレコード

レコードはイベントではなく JSON ドキュメントです。次の例は、1 つのバッチで一緒に失敗した 2 つのイベントに対して 1 つのレコードを示しています。

{ "version": "1.0", "busArn": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef", "subscriberArn": "arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLEabcdef1234567890", "targetArn": "arn:aws:sqs:us-east-1:111122223333:large-orders", "errorCode": "ACCESS_DENIED", "errorMessage": "The delivery role is not authorized to perform sqs:SendMessage on the target.", "exhaustedRetryCondition": "MaximumEventAgeInSeconds", "retryAttempts": 4, "failedMessages": [ { "eventId": "a1b2c3d4-...", "eventGroupId": "order-1001", "deduplicationId": null, "timestamp": "2026-09-16T18:40:12Z", "targetRequestId": "..." }, { "eventId": "e5f6a7b8-...", "eventGroupId": "order-1001", "deduplicationId": null, "timestamp": "2026-09-16T18:40:13Z", "targetRequestId": "..." } ] }

キューに到達するすべての障害が最初に再試行されました。 をスキップする配信障害はありませんRetryPolicy。EventBridge 自体内の障害は、無制限に EventBridge によって再試行され、レコードは生成されません。次の表に、レコードが保持できるコードを示します。 errorMessageは 1,024 文字に切り捨てられます。

errorCode失敗した内容errorMessage
CUSTOMER_VALIDATIONターゲット API がリクエストを拒否しました (4xx レスポンス): 不正な値、欠落しているフィールド、不正な形式の本文ターゲット API の独自のメッセージ
ACCESS_DENIEDEventBridge が配信ロールを引き受けることができなかったか、ロールがターゲットを呼び出すことが許可されていないか、ターゲットの AWS KMS キーがアクセスを拒否しましたEventBridge がロールを引き受けることができませんでした。ロールが存在し、その信頼ポリシーで EventBridge サービスプリンシパルがロールを引き受けることが許可されていることを確認します。 または EventBridge はリソースにアクセスできませんでした。存在し、そのポリシーが EventBridge サービスプリンシパルアクセスを許可していることを確認します。
RESOURCE_NOT_FOUNDターゲットまたはその AWS KMS キーが存在しないは上記のメッセージ、または汎用メッセージにアクセスできませんでした
INPUT_TRANSFORMATION_FAILURETransformer またはユニバーサルターゲットInput式が値をスローまたは生成しなかった式エラー
THROTTLINGターゲットが呼び出しをスロットリングしました汎用メッセージ
EXECUTION_TIMEOUTターゲットが 内で応答しませんでした InvocationTimeoutSeconds汎用メッセージ
REQUEST_TOO_LARGEリクエストがターゲットのサイズ制限を超えました。 MaxBatchSize汎用メッセージ
PARTIAL_BATCH_FAILUREターゲットはバッチの一部を受け入れ、残りを拒否しました。レコードの には拒否されたイベントのみfailedMessagesが表示されます。汎用メッセージ
RESOURCE_CONFLICTターゲットが競合を報告しました。たとえば、既に使用されている名前などです。汎用メッセージ
KMS_INVALID_STATEターゲットの AWS KMS キーが無効になっているか、削除が保留中です汎用メッセージ
SFN_TYPE_NOT_SUPPORTEDREQUEST_RESPONSE は、同期実行をサポートしていない標準ステートマシンで使用されました汎用メッセージ
COMPUTE_EXECUTION_ERRORREQUEST_RESPONSE 関数または実行が実行され、エラーが報告されました汎用メッセージ
INVOCATION_DEPENDENCY_INTERNALターゲットがサーバーエラー (5xx レスポンス) を返しました汎用メッセージ
LOOP_DETECTEDイベント、またはそのイベントから派生したイベントは、既にターゲットバスを通過しています。「」を参照してください。 ループ検出汎用メッセージ
INTERNAL_SERVER_ERROR再試行を使い果たした通話中の EventBridge 内の障害汎用メッセージ

一般的なメッセージは です。配信に失敗しました。調査時にこのレコードのエラーコードとリクエスト ID を使用し、障害が解決しない場合は AWS サポートにお問い合わせください。EventBridge は、基盤となるメッセージを渡すと別のサービスの内部が公開される可能性がある場合にこれを使用します。そのため、これらのコードでは、 errorCodeおよび targetRequestId は、送信されたリクエストを伝達するEVENT_DELIVERY_ATTEMPTログレコードとともに、操作する事実です。同じ値が Amazon SQS メッセージ属性 (ERROR_CODE、ERROR_MESSAGE、、SUBSCRIBER_ARN、、RETRY_ATTEMPTS) として到着するためTARGET_ARNBUS_ARNEXHAUSTED_RETRY_CONDITION、コンシューマーは本文を解析せずにそれらの属性をルーティングできます。FIFO サブスクライバーの場合、FIFO キューをデッドレターキューとして使用します。EventBridge は各レコードの をイベントの MessageGroupIdから設定するためEventGroupId、1 つのグループのレコードは順番に残ります。

配信ロールはキューsqs:SendMessageに が必要です。これがないと、OnFailureDestinationFailedメトリクスは書き込めなかった各レコードをカウントし、それらのイベントは失われます。

デッドレターキューからのイベントの配信

キューはイベントではなくレコードを保持するため、バスからイベントを再生してリドライブします。イベントはバスの保持期間内である必要があります。

  1. レコードを読み取り、すべての failedMessages[].eventIdに加えて、最も古い と最新の を収集しますtimestamp。

  2. ロールのポリシー、ターゲット、または式errorCodeの名前の原因を修正しました。

  3. 同じターゲットとロール、 が最も早いタイムスタンプで StartingPointがEndPoint最新であるPOINT_IN_TIME開始位置、識別子に対するSYSTEM_METADATAフィルターを持つ同じバスにサブスクライバーを作成します。

  4. サブスクライバーがイベントを配信したら、イベントを削除し、キューからレコードを削除します。

aws eventsv2 create-subscriber \ --name redrive-2026-09-16 \ --event-bus-arn arn:aws:events:us-east-1:111122223333:event-busv2/orders/EXAMPLE1234567890abcdef \ --starting-position POINT_IN_TIME \ --point-in-time-configuration '{ "PointType": "TIMESTAMP", "StartingPoint": "2026-09-16T18:40:00Z", "EndPoint": "2026-09-16T18:41:00Z" }' \ --filter-configuration '{ "Filters": [ { "Scope": "SYSTEM_METADATA", "Pattern": "{\"aws:EventId\":[\"a1b2c3d4-...\",\"e5f6a7b8-...\"]}" } ] }' \ --invoke-configuration '{ "TargetArn": "arn:aws:sqs:us-east-1:111122223333:large-orders", "RoleArn": "arn:aws:iam::111122223333:role/EventBusDeliveryRole" }'

リプレイされたイベントは aws:DeliveryType で到着するためREPLAY、コンシューマーはライブトラフィックから通知できます。