イベントの再試行ポリシーとデッドレターキューの使用 - Amazon EventBridge

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

イベントの再試行ポリシーとデッドレターキューの使用

時々eventに正常に配信されないtargetで指定されたルール。これは、たとえば、ターゲットリソースが使用できない場合や、EventBridge にターゲットリソースへのアクセス権限がない場合、またはネットワーク状態が原因で発生します。イベントがターゲットに正常に配信されない場合、EventBridge はイベントの送信を再試行します。試行する時間の長さと、再試行回数をポリシーを再試行する設定をターゲットに設定します。デフォルトでは、EventBridge はイベントの送信を 24 時間、最大 185 回再試行します。指数関数的なバックオフと[ジッタ]、またはランダム化遅延。すべての再試行が試行された後でイベントが配信されない場合、そのイベントはドロップされ、EventBridge はその処理を続行しません。ターゲットへの配信に失敗したイベントが失われることを回避するには、デッドレターキュー(DLQ)を設定し、失敗したイベントをすべて送信して、後で処理します。

EventBridge DLQ は、ターゲットに正常に配信できなかったイベントを格納するために EventBridge が使用する標準的な Amazon SQS キューです。ルールを作成してターゲットを追加するときに、DLQ を使用するかどうかを選択できます。DLQ を構成するときに、正常に配信されなかったイベントを保持できます。その後、失敗したイベント配信の原因となった問題を解決し、後でイベントを処理できます。

イベントエラーは、さまざまな方法で処理されます。一部のイベントは、再試行を行わずにドロップされるか、DLQ に送信されます。たとえば、ターゲットへのアクセス許可の欠落またはターゲットリソースが存在しなくなったために発生したエラーの場合、根本的な問題を解決するためのアクションが実行されるまで、すべての再試行は失敗します。EventBridge は、再試行するのではなく、これらのイベントを DLQ に直接送信します (存在する場合)。

イベントの配信が失敗すると、EventBridge は Amazon CloudWatch メトリックスにイベントを発行し、ターゲットのinvocationfailed. DLQ を使用する場合、追加のメトリックスが CloudWatch に送信されます。InvocationsSentToDLQおよびInvocationsFailedToBeSentToDLQ。EventBridge メトリクスの詳細については、「」を参照してください。Amazon EventBridge モニタリング

デッドレターキューの使用に関する考慮事項

EventBridge に DLQ を設定する場合は、次の点を考慮してください。

  • のみ標準キューがサポートされています。EventBridge で DLQ に FIFO キューを使用することはできません。

  • EventBridge には、エラーコード、エラーメッセージ、枯渇した再試行条件、ルール ARN、再試行試行、ターゲット ARN など、イベントメタデータとメッセージ属性がメッセージに含まれます。これらの値を使用して、イベントとエラーの原因を特定します。

  • 同じアカウントの DLQ に対する権限:

    • コンソールを使用してルールにターゲットを追加し、同じアカウントで Amazon SQS キューを選択した場合、リソースベースのポリシーは、キューに EventBridge アクセスを許可するキューにアタッチされます。

    • を使用する場合、PutTargetsオペレーションを使用してルールのターゲットを追加または更新し、同じアカウントで Amazon SQS キューを選択した場合は、選択したキューにアクセス許可を手動で付与する必要があります。詳細については、「デッドレターキューへの権限の付与」を参照してください。

  • Amazon SQS キューを別のAWSアカウント.

    • コンソールからルールを作成する場合、他のアカウントのキューは選択できません。他のアカウントのキューの ARN を指定し、リソースベースのポリシーを手動でアタッチして、キューにアクセス許可を付与する必要があります。詳細については、「デッドレターキューへの権限の付与」を参照してください。

    • API を使用してルールを作成する場合、デッドレターキューとして使用される別のアカウントの SQS キューにリソースベースのポリシーを手動でアタッチする必要があります。詳細については、「デッドレターキューへの権限の付与」を参照してください。

  • 使用する Amazon SQS キューは、ルールを作成するリージョンと同じリージョンに存在する必要があります。

デッドレターキューへの権限の付与

ルールのターゲットに DLQ を設定すると、EventBridge は呼び出しに失敗したイベントを選択した Amazon SQS キューに送信します。イベントをキューに正常に配信するには、EventBridge に、そのための権限が必要です。ルールのターゲットを構成し、EventBridge コンソールを使用して DLQ を選択すると、権限が自動的に追加されます。API を使用してルールを作成する場合、または別のAWSアカウントを使用する場合は、必要なアクセス許可を付与するリソースベースのポリシーを手動で作成し、キューにアタッチする必要があります。

以下のリソースベースのポリシーは、EventBridge が Amazon SQS キューにイベントメッセージを送信するために必要なアクセス権限を付与する方法を示しています。このポリシーの例では、EventBridge サービスにSendMessage操作を使用して、「MyEventDLQ」という名前のキューにメッセージを送信します。キューは、の us-west-2 リージョンに存在する必要があります。AWSアカウント123456789012。-Conditionステートメントでは、us-west-2 リージョンで作成された「MyTestRule」という名前のルールからのリクエストのみが許可されます。AWSアカウント123456789012。

{ "Sid": "Dead-letter queue permissions", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-west-2:123456789012:MyEventDLQ", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:events:us-west-2:123456789012:rule/MyTestRule" } } }

ポリシーをキューにアタッチするには、Amazon SQS コンソールを使用してキューを開き、アクセスポリシーをクリックし、ポリシーを編集します。また、 を使用することもできますAWS CLIを参照してください。詳細については、Amazon SQS のアクセス許可

デッドレターキューからイベントを再送信する方法

メッセージを DLQ から移動するには、次の 2 つの方法があります。

  • Amazon SQS コンシューマロジックの作成を避ける — DLQ をイベントソースとしてイベントソースに設定して、DLQ を消費します。

  • Amazon SQS コンシューマーロジックの作成 — Amazon SQS API を使用します。AWSSDK、またはAWS CLIを使用して、DLQ 内のメッセージのポーリング、処理、削除を行うカスタムコンシューマーロジックを記述します。