AWS Lambda
개발자 가이드

배달 못한 편지 대기열

비동기로 호출된 모든 Lambda 함수는 두 번 재시도한 뒤에 해당 이벤트를 무시하게 됩니다. 재시도에 실패했는데 이유를 모르는 경우, DLQ(배달 못한 편지 대기열)를 사용하여 처리되지 않은 이벤트를 Amazon SQS 대기열 또는 Amazon SNS 주제로 보내 결함을 분석해 볼 수 있습니다.

AWS Lambda는 처리할 수 없는 이벤트를 지정된 Amazon SNS 주제 또는 Amazon SQS 대기열로 보냅니다. DLQ를 지정하지 않은 함수는 재시도 횟수가 끝난 뒤 이벤트를 폐기합니다. 재시도에 대한 자세한 정보는 AWS Lambda 재시도 동작 단원을 참조하십시오.

Lambda 함수의 DeadLetterConfig 파라미터에 Amazon 리소스 이름 TargetArn 값을 지정하여 DLQ를 구성할 수 있습니다.

{ "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 함수의 실행 역할에 권한을 추가로 부여해야 합니다.

DLQ 대상 ARN에 기록된 페이로드는 메시지 본문을 수정하지 않은 원본 이벤트 페이로드입니다. 메시지 속성에는 이벤트가 처리되지 않은 이유를 이해하는 데 도움이 되는 정보가 포함되어 있습니다.

DLQ 메시지 속성

이름 유형
RequestID 문자열 고유 요청 식별자
ErrorCode 번호 3자리 HTTP 오류 코드
ErrorMessage 문자열 오류 메시지(1KB로 잘림)

권한 문제로 인해 또는 메시지 총 크기가 대상 대기열이나 주제의 한도를 초과할 경우 DLQ 메시지가 대상에 전송되지 못할 수 있습니다. 예를 들어 본문이 256 KB에 근접한 Amazon SNS 알림이 오류를 발생시키는 함수를 트리거할 경우, Amazon SNS가 추가하고 Lambda가 추가한 속성과 결합된 추가 이벤트로 인해 메시지가 DLQ에 허용된 최대 크기를 초과할 수 있습니다. DLQ에 쓸 수 없을 경우, Lambda는 이벤트를 삭제하고 DeadLetterErrors 측정치를 내보냅니다.

이벤트 소스로 Amazon SQS를 사용 중인 경우 Lambda 함수가 아닌 Amazon SQS 대기열 자체에서 DLQ를 구성하십시오. 자세한 정보는 Using AWS Lambda with Amazon SQS 단원을 참조하십시오.