AWS Lambda
개발자 가이드

비동기식 호출

함수를 비동기식으로 호출하면 Lambda는 이벤트를 대기열로 보냅니다. 별도의 프로세스를 통해 대기열에서 이벤트를 읽은 후 함수를 실행합니다. 이벤트가 대기열에 추가되면 Lambda는 부가적인 정보가 없는 성공 응답을 반환합니다. 함수를 비동기식으로 호출하려면 호출 유형 파라미터를 Event로 설정하십시오.

$ aws lambda invoke --function-name my-function --invocation-type Event --payload '{ "key": "value" }' response.json { "StatusCode": 202 }

출력 파일(response.json)에는 아무런 정보도 포함되어 있지 않지만 이 명령을 실행하면 여전히 생성됩니다. Lambda가 이벤트를 대기열에 추가할 수 없는 경우 명령 출력에 오류 메시지가 표시됩니다.

Lambda는 함수의 비동기식 호출 대기열을 관리하고 실패한 이벤트를 자동으로 재시도합니다. 함수가 오류를 반환하면 Lambda는 함수를 두 번 더 실행하려 합니다. 이때 첫 두 시도 간에는 1분의 대기 시간이 있으며 두 번째와 세 번째 시도 간에는 2분의 대기 시간이 있습니다. 함수 오류에는 함수의 코드가 반환하는 오류와 제한 시간과 같이 함수의 런타임에서 반환하는 오류가 포함되어 있습니다. 이 3번의 시도가 모두 실패하면 Lambda는 이벤트를 배달 못한 편지 대기열로 보냅니다(구성되어 있는 경우).


      Lambda는 각 시도를 하위 세그먼트에 기록합니다.

함수가 모든 이벤트를 처리할 수 있을 만큼 가용 동시성이 충분하지 않은 경우 추가 요청은 제한됩니다. 조절 오류(429) 및 시스템 오류(500 시리즈)의 경우 Lambda는 이벤트를 대기열로 반환하고 최대 6시간 동안 함수 재실행을 시도합니다. 재시도 간격은 첫 번째 시도 후 1초부터 최대 5분까지 기하급수적으로 증가하지만, 대기열이 백업되는 경우 더 길어질 수 있습니다. 또한 Lambda는 대기열에서 이벤트를 읽는 속도를 줄이므로 대기열에서 더 뒤쪽에 있는 이벤트는 읽지 못할 수 있습니다. 이벤트가 대기열에 있을 수 있는 최대 시간은 4일입니다.


      조정된 요청은 AWS X-Ray에서 대기 중으로 표시됩니다.

함수가 오류를 반환하지 않는다 하더라도 대기열 자체에 최종 일관성이 있으므로 Lambda에서 동일한 이벤트를 여러 번 수신할 수 있습니다. 함수가 수신 이벤트를 따라잡을 수 없는 경우 이벤트는 함수로 전송되지 않고 대기열에서 삭제될 수도 있습니다. 함수 코드가 중복 이벤트를 정상적으로 처리하는지, 모든 호출을 처리할 수 있을 만큼의 가용 동시성이 있는지 확인하십시오.

AWS Lambda 함수 배달 못한 편지 대기열

3번의 비동기식 호출 처리 시도가 모두 실패하는 경우 Lambda는 이벤트를 Amazon SQS 대기열 또는 Amazon SNS 주제로 보낼 수 있습니다. 배달 못한 편지 대기열이 있는 함수가 추가 처리를 위해 이 이벤트를 저장하도록 구성합니다.

대기열 또는 주제가 없는 경우 생성합니다. 사용 사례에 부합하는 대상 유형을 선택합니다.

대기열 또는 주제로 이벤트를 전송하려면 함수에 추가 권한이 필요합니다. 필요한 권한이 있는 정책을 함수의 실행 역할에 추가합니다.

대상을 생성하고 함수의 실행 역할을 업데이트한 후 배달 못한 편지 대기열을 함수에 추가합니다. 여러 함수에서 동일한 대상으로 이벤트를 전송하도록 구성할 수 있습니다.

배달 못한 편지 대기열을 구성하려면

  1. Lambda 콘솔 함수 페이지를 엽니다.

  2. 함수를 선택합니다.

  3. Debugging and error handling(디버깅 및 오류 처리)에서 DLQ 리소스Amazon SQS 또는 Amazon SNS로 설정합니다.

  4. 대상 대기열 또는 주제를 선택합니다.

  5. Save를 선택합니다.

AWS CLI를 이용해 배달 못한 편지 대기열을 구성하려면 update-function-configuration 명령을 사용하십시오.

$ aws lambda update-function-configuration --function-name my-function \ --dead-letter-config TargetArn=arn:aws:sns:us-east-2:123456789012:my-topic

Lambda는 이벤트를 속성 관련 추가 정보와 함께 배달 못한 편지 대기열에 있는 그대로 보냅니다. 이 정보를 사용해 함수가 반환한 오류를 식별하거나 이벤트와 로그 또는 AWS X-Ray 추적과의 상관 관계를 알 수 있습니다.

DLQ 메시지 속성

  • RequestID(문자열) – 호출 요청의 ID입니다. 요청 ID는 함수 로그에 표시됩니다. X-Ray SDK를 사용해 추적에 있는 속성에 요청 ID를 기록할 수 있습니다. 이 ID는 X-Ray 콘솔에서 요청 ID별로 검색할 수 있습니다. 관련 예시는 오류 처리자 샘플을 참조하십시오.

  • ErrorCode(숫자) – HTTP 상태 코드입니다.

  • ErrorMessage(문자열) – 오류 메시지의 첫 1KB입니다.


      Amazon SQS 콘솔의 배달 못한 편지 대기열 이벤트 속성입니다.

Lambda는 배달 못한 편지 대기열로 메시지를 전송할 수 없는 경우 이벤트를 삭제하고 DeadLetterErrors 지표를 방출합니다. 이것은 권한 부족으로 인해 또는 메시지 총 크기가 대상 대기열이나 주제의 한도를 초과하는 경우 발생할 수 있습니다. 예를 들어 본문이 256 KB에 근접한 Amazon SNS 알림이 오류를 발생시키는 함수를 트리거할 경우, Amazon SNS가 추가하고 Lambda가 추가한 속성과 결합된 추가 이벤트로 인해 메시지가 DLQ에 허용된 최대 크기를 초과할 수 있습니다.

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

이 페이지에서: