翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ス EventBridge ケジューラでスケジュールのデッドレターキューを設定する
Amazon EventBridge スケジューラは、Amazon Simple Queue Service を使用してデッドレターキュー (DLQ) をサポートします。スケジュールがターゲットの呼び出しに失敗すると、ス EventBridge ケジューラは、呼び出しの詳細とターゲットから受信したレスポンスを含むJSONペイロードを、指定した Amazon SQS標準キューに配信します。
次のトピックでは、これをデッドレターイベント JSONと呼びます。デッドレターイベントを使用すると、スケジュールやターゲットに関する問題をトラブルシューティングできます。スケジュールに再試行ポリシーを設定すると、ス EventBridge ケジューラは設定した最大再試行回数を使い果たしたデッドレターイベントを配信します。
以下のトピックでは、スケジュールDLQの として Amazon SQSキューを設定し、ス EventBridge ケジューラが Amazon にメッセージを配信するために必要なアクセス許可を設定しSQS、 からデッドレターイベントを受信する方法について説明しますDLQ。
Amazon SQSキューを作成する
スケジュールDLQに を設定する前に、標準の Amazon SQSキューを作成する必要があります。Amazon SQSコンソールを使用してキューを作成する手順については、「Amazon Simple Queue Service デベロッパーガイドSQS」の「Amazon キューの作成」を参照してください。
注記
EventBridge スケジューラは、スケジュールの としてのFIFOキューの使用をサポートしていませんDLQ。
次の AWS CLI コマンドを使用して、標準キューを作成します。
$
aws sqs create-queue --queue-name
queue-name
成功すると、出力に QueueURL
が表示されます。
{
"QueueUrl": "https://sqs.us-west-2.amazonaws.com/123456789012/scheduler-dlq-test"
}
キューを作成したら、キュー を書き留めますARN。ス EventBridge ケジューラのスケジュールDLQに を指定するARN場合は、 が必要です。キューは Amazon SQSコンソールARNで、または get-queue-attributes
$
aws sqs get-queue-attributes --queue-url
your-dlq-url
--attribute-names QueueArn
成功すると、ARN出力にキューが表示されます。
{ "Attributes": { "QueueArn": "arn:aws:sqs:us-west-2:123456789012:scheduler-dlq-test" } }
次のセクションでは、スケジュール実行ロールに必要なアクセス許可を追加して、ス EventBridge ケジューラがデッドレターイベントを Amazon に配信できるようにしますSQS。
実行ロールのアクセス許可を設定する
ス EventBridge ケジューラがデッドレターイベントを Amazon に配信できるようにするにはSQS、スケジュール実行ロールに次のアクセス許可ポリシーが必要です。スケジュール実行ロールに新しいアクセス権限ポリシーをアタッチする方法の詳細については、「実行ロールの設定」を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sqs:SendMessage" ], "Effect": "Allow", "Resource": "*" } ] }
注記
ス EventBridge ケジューラを使用して Amazon SQSAPIターゲットを呼び出す場合、スケジュール実行ロールに必要なアクセス許可が既にアタッチされている可能性があります。
次のセクションでは、ス EventBridge ケジューラコンソールを使用して、スケジュールDLQに を指定します。
デッドレターキューを指定する
を指定するにはDLQ、ス EventBridge ケジューラコンソールまたは AWS CLI を使用して既存のスケジュールを更新するか、新しいスケジュールを作成します。
次のセクションでは、 を使用して AWS CLI からデッドレターイベントを受信しますDLQ。
デッドレターイベントの取得
以下に示すように receive-message
--max-number-of-messages
属性を使用して、取得するメッセージの数を設定できます。
$
aws sqs receive-message --queue-url
your-dlq-url
--attribute-names All --message-attribute-names All --max-number-of-messages 1
成功すると、次のような出力が表示されます。
{ "Messages": [ { "MessageId": "2aeg3510-fe3a-4f5a-ab6a-6906560eaf7e", "ReceiptHandle": "AQEBkNKTdOMrWgHKPoITRBwrPoK3eCSZIcZwVqCY0BZ+FfTcORFpopJbtCqj36VbBTlHreM8+qM/m5jcwqSlAlGmIJO/hYmMgn/+dwIty9izE7HnpvRhhEyHxbeTZ5V05RbeasYaBdNyi9WLcnAHviDh6MebLXXNWoFyYNsxdwJuG0f/w3htX6r3dxpXvvFNPGoQb8ihY37+u0gtsbuIwhLtUSmE8rbldEEwiUfi3IJ1zEZpUS77n/k1GWrMrnYg0Gx/BuaLzOrFi2F738XI/Hnh45uv3ca6OYwS1ojPQ1LtX2URg1haV5884FYlaRvY8jRlpCZabTkYRTZKSXG5KNgYZnHpmsspii6JNkjitYVFKPo0H91w5zkHlSx3REAuWk7m3r7PmOMvTNPMhctbD3CkTw==", "MD5OfBody": "07adc3fc889d6107d8bb8fda42fe0573", "Body": "{\"MessageBody\":\"Hello, world!",\"QueueUrl\":\"https://sqs.us-west-2.amazonaws.com/123456789012/does-not-exist\"}", "Attributes": { "SenderId": "AROA2DZE3W4CTL5ZR7EIN:ff00212d8c453aaaae644bc6846d4723", "ApproximateFirstReceiveTimestamp": "1652499058144", "ApproximateReceiveCount": "2", "SentTimestamp": "1652490733042" }, "MD5OfMessageAttributes": "f72c1d78100860e00403d849831d4895", "MessageAttributes": { "ERROR_CODE": { "StringValue": "AWS.SimpleQueueService.NonExistentQueue", "DataType": "String" }, "ERROR_MESSAGE": { "StringValue": "The specified queue does not exist for this wsdl version.", "DataType": "String" }, "EXECUTION_ID": { "StringValue": "ad06616e51cdf74a", "DataType": "String" }, "EXHAUSTED_RETRY_CONDITION": { "StringValue": "MaximumEventAgeInSeconds", "DataType": "String" } "IS_PAYLOAD_TRUNCATED": { "StringValue": "false", "DataType": "String" }, "RETRY_ATTEMPTS": { "StringValue": "0", "DataType": "String" }, "SCHEDULED_TIME": { "StringValue": "2022-05-14T01:12:00Z", "DataType": "String" }, "SCHEDULE_ARN": { "StringValue": "arn:aws:scheduler:us-west-2:123456789012:schedule/DLQ-test", "DataType": "String" }, "TARGET_ARN": { "StringValue": "arn:aws:scheduler:::aws-sdk:sqs:sendMessage", "DataType": "String" } } } ] }
デッドレターイベントの以下の属性に注目しておくと、ターゲットの呼び出しが失敗した原因として考えられるものの特定とトラブルシューティングに役立ちます。
-
ERROR_CODE
– ス EventBridge ケジューラがターゲットのサービス から受け取るエラーコードが含まれますAPI。前の例では、Amazon によって返されるエラーコードは SQSですAWS.SimpleQueueService.NonExistentQueue
。ス EventBridge ケジューラの問題によりスケジュールがターゲットの呼び出しに失敗した場合、代わりに というエラーコードが表示されますAWS.Scheduler.InternalServerError
。 -
ERROR_MESSAGE
– ス EventBridge ケジューラがターゲットのサービス から受け取るエラーメッセージが含まれますAPI。前の例では、Amazon から返されるエラーメッセージSQSは ですThe specified queue does not exist for this wsdl version
。ス EventBridge ケジューラの問題が原因でスケジュールが失敗した場合、代わりに というエラーメッセージが表示されますUnexpected error occurred while processing the request
。 -
TARGET_ARN
- スケジュールが呼び出すターゲットARNの を、次のサービスARN形式で指定します:arn:aws:scheduler:::aws-sdk:
。service
:apiAction
-
EXHAUSTED_RETRY_CONDITION
– イベントが に配信された理由を示しますDLQ。この属性は、ターゲットからのエラーAPIが再試行可能なエラーであり、永続的なエラーではない場合に表示されます。属性には、スケジュールに設定した最大再試行回数を超えたDLQ後にスMaximumRetryAttempts
EventBridge ケジューラがそれを に送信した場合、またはイベントがスケジュールに設定した最大期間より古くMaximumEventAgeInSeconds
、まだ配信に失敗している場合、 の値を含めることができます。
前の例では、エラーコードとエラーメッセージに基づいて、スケジュールに指定したターゲットキューが存在しないと判断できます。