メニュー
AWS Lambda
開発者ガイド

デッドレターキュー

デフォルトでは、非同期で呼び出されたエラーになった Lambda 関数は 2 回再試行され、その後イベントは破棄されます。デッドレターキュー (DLQ) を使用して、その未処理イベントを、さらにアクションが行える Amazon SQS キューまたは Amazon SNS トピックに代わりに送信するよう Lambda に指定できます。

次のコードに示すように、イベントペイロードを送信したい Amazon SNS トピックまたは Amazon SQS キューの Lambda 関数の DeadLetterConfig パラメーターでターゲット Amazon リソースネーム (ARN) を指定することで、DLQ を設定します。Amazon SNS トピックの作成の詳細については、「SNS トピックの作成」を参照してください。Amazon SQS キューの作成の詳細については、「チュートリアル: Amazon SQS キューの作成」を参照してください。

Copy
{ "Code": { "ZipFile": blob, "S3Bucket": “string”, "S3Key": “string”, "S3ObjectVersion": “string” }, "Description": "string", "FunctionName": "string", "Handler": "string", "MemorySize": number, "Role": "string", "Runtime": "string", "Timeout": number "Publish": bool, "DeadLetterConfig": { "TargetArn": "string" } }

Lambda は、Lambda 関数に設定した Amazon SNS トピックまたは Amazon SQS キューに処理できないイベントを送信します。関連付けられている DLQ のない関数は、再試行の上限に達した後でイベントを破棄します。再試行ポリシーの詳細については、「エラー時の再試行」を参照してください。Lambda 関数の実行ロールの一部として、DLQ リソースへのメッセージの読み取り/発行/送信アクセスを明示的に許可する必要があります。DLQ ターゲット ARN に書き込まれるペイロードは、メッセージ本文への変更のない元のイベントペイロードです。以下のメッセージの属性には、イベントが処理されなかった理由を理解するのに役立つ情報が含まれています。

名前 タイプ
RequestID 文字列 一意のリクエスト ID
ErrorCode 数値 3 桁の HTTP エラーコード
ErrorMessage 文字列 エラーメッセージ (1 KB に切り捨て)

何らかの理由で、イベントペイロードがターゲット ARN に達する点で継続的に失敗する場合は、Lambda は DeadLetterErrors と呼ばれる CloudWatch メトリックスをインクリメントしてから、イベントペイロードを削除します。