SAM 함수의 비동기 실패 이벤트 보관 미설정

비동기 호출에서 처리하지 못한 이벤트의 보관 경로를 구성하세요.

설명

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

참조