설명
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