説明
SAM関数のDeadLetterQueueは、Lambdaの非同期呼び出しで再試行回数や保持時間の上限に達したイベントの送信先です。DLQや失敗時の送信先がないと、イベントの調査や再処理が難しくなる場合があります。
想定される影響
失敗した入力が残らないと、原因調査や復旧が遅れるおそれがあります。
対処方法
DeadLetterQueueに標準SQSキューまたはSNSトピックのTypeとTargetArnを指定するか、非同期呼び出しの失敗時の送信先を使ってください。SQSイベントソースの場合は、ソースキューのDLQを設定してください。
例
イメージベースの関数に非同期DLQを追加する例です。イメージURI、実行設定、キューARNは実際のリソースに合わせ、送信権限を確認してください。
変更前
yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
Function:
Type: AWS::Serverless::Function
Properties:
PackageType: Image
ImageUri: account-id.dkr.ecr.region.amazonaws.com/ecr-repo-name:image-name
ImageConfig:
Command:
- app.lambda_handler
EntryPoint:
- entrypoint1
WorkingDirectory: workDir
Tags:
Type: AWS Serverless Function
変更後
yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
Function:
Type: AWS::Serverless::Function
Properties:
PackageType: Image
ImageUri: account-id.dkr.ecr.region.amazonaws.com/ecr-repo-name:image-name
ImageConfig:
Command:
- app.lambda_handler
EntryPoint:
- entrypoint1
WorkingDirectory: workDir
Tags:
Type: AWS Serverless Function
DeadLetterQueue:
TargetArn: arn:aws:sqs:us-east-1:123456789012:aaa
Type: SQS