비동기 함수를 호출 할 때, 람다는 큐에 이벤트를 보냅니다. 별도의 프로세스는 큐에서 이벤트를 읽고 함수를 실행합니다. 대기열에 이벤트를 추가 한 후, 람다는 성공 응답을 반환하기보다는 다른 정보로 돌아갑니다. 비동기 함수를 호출 입력 매개 변수 세트를 문의하십시오 Event
.
출력 파일은 ( response.json
) 정보를 포함하지 않지만,이 명령을 실행할 때 여전히이 파일을 만듭니다. 수없는 람다가 큐에 이벤트를 추가 할 경우, 오류 메시지가 명령 출력에 표시됩니다.
람다 비동기 호출 큐 관리 기능, 그리고 시도는 자동으로 실패 이벤트를 다시 시도합니다. 함수가 오류를 반환하는 경우, 람다는 두 번 다시 실행 이전의 두 시도 사이 잠깐, 두 번째와 세 번째 시간 사이 2 분 정도 기다려야 할 것입니다. 오류 코드를 포함하는 오류 함수는 함수에 의해 반환하고, 오류 기능은 제한 시간으로, 실행 반환합니다. 세 가지 시도가 실패하면, 람다 이벤트가 전송됩니다 데드 - 레터 큐 (구성된 경우).
![람다 서브 세그먼트들 각각의 시도를 기록한다.](https://docs.aws.amazon.com/zh_cn/lambda/latest/dg/images/invocation-types-retries.png)
이 모든 이벤트의 동시 처리를위한 충분한이없는 경우, 다른 요청은 제한됩니다. 한계 오류 (429) 및 시스템 오류 (500 시리즈)의 경우, 람다 이벤트는 큐에 돌아가 6 시간에 다시 기능을 실행하려고합니다. 최대 5 분 첫 시도 후 일초에서 기하 급수적으로 증가 간격을 시도하지만, 큐가 백업되는 경우, 더 길 수있다. 람다는 큐 레이트로부터 판독 한 이벤트를 감소시키고, 상기 이벤트 큐 복귀 판독 될 수 없다. 이벤트가 가장 긴 대기열에 위치 할 수있는 것은 사일입니다.
![요청 제한은 AWS X 선에 보류중인 것으로 도시된다.](https://docs.aws.amazon.com/zh_cn/lambda/latest/dg/images/invocation-types-throttle.png)
함수가 오류를 반환하지 않는 경우에도 큐 자체가 최종 일관성을 가지고 있기 때문에, 람다에서 여러 번 같은 이벤트를 수신 할 수있다. 함수가 수신 이벤트로 유지할 수없는 경우,이 함수에 보내지 않고 큐에서 이벤트를 제거 할 수있다. 코드가 올바르게 이벤트 기능을 반복 처리 작동하는지 확인하십시오, 당신은 충분히 동시 처리가 모든 통화에 사용할 수 있습니다.
AWS 람다 데드 레터 큐 기능
세 가지 시도가 비동기 호출이 실패 취급 할 경우, 람다는 아마존 SQS 큐 또는 아마존 SNS 주제로 이벤트를 보낼 수 있습니다. 추가 처리를 위해 이러한 이벤트를 저장하는 죽은 편지 대기열 구성 기능을 사용하십시오.
당신이 대기열 또는 주제하지 않는 경우, 대기열 또는 주제를 만드십시오. 사용 사례 일치의 대상 유형을 선택합니다.
-
아마존 SQS 큐 - 그들은 지금까지 검색 될 때까지 큐가 실패 이벤트를 저장합니다. 수동 또한, 이벤트를 검색 할 수 있습니다 람다 큐에서 읽을 구성 할 수 있습니다 및 함수를 호출합니다.
에서 아마존 SQS 콘솔 , 큐를 만들 수 있습니다.
-
아마존 SNS 테마 - 이벤트의 주제는 하나 개 이상의 대상의 실패에 전달됩니다. 당신은 이벤트, 람다 함수 또는 HTTP 터미널 노드로 이메일 주소로 테마를 구성 할 수 있습니다.
에서 아마존 SNS 콘솔 , 테마를 만들 수 있습니다.
대기열 또는 주제에 전송 이벤트를 추가하려면 기능 추가 권한이 필요합니다. 기능을 추가하는 것은이 의 역할을 수행 할 권한 필요한 정책을.
-
아마존 SQS - SQS : sendMessage 첨부
-
아마존 SNS - SNS : 게시
역할 업데이트 기능을 목표를 만들고 수행 한 후 죽은 편지 큐 기능에 추가됩니다. 당신은 동일한 대상에 이벤트를 보낼 여러 기능을 구성 할 수 있습니다.
죽은 편지 대기열 구성
-
열기 람다 콘솔 기능 페이지 .
-
기능을 선택합니다.
-
에는 디버깅 및 오류 처리 (디버깅 및 오류 처리) 언더 DLQ 리소스 에 아마존 SQS 또는 아마존 SNS .
-
대상 대기열 또는 주제를 선택합니다.
-
선택 저장을 .
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
람다 AS는 데드 큐로 이벤트 및 속성에 포함 된 다른 정보를 전송한다. 당신은 함수가 오류를 반환 식별하기 위해이 정보를 사용하거나 이벤트 로그 또는 AWS X 레이 추적이 연결되어 있습니다.
DLQ의 메시지 속성
-
RequestID가 (문자열) - ID 호출 요청. 요청 ID는 로그 함수로 표시된다. 또한 속성 요청 ID의 실적에 X 레이 개발 키트를 사용할 수 있습니다, 그리고 당신은 X 레이 콘솔에서 검색 요청 ID를 누를 수 있습니다. 예를 들어, 참조 에러 처리기 예 .
-
ErrorCode가 (디지털) - HTTP 상태 코드입니다.
-
ErrorMessage가 (문자열) - 오류 메시지의 텍스트의 1 1킬로바이트 블록.
![배달 못한 편지 큐 이벤트는 아마존 SQS 콘솔 때문이다.](https://docs.aws.amazon.com/zh_cn/lambda/latest/dg/images/invocation-dlq-attributes.png)
람다가 죽은 문자 메시지 큐에 송신 할 수없는 경우, 이벤트는 제거하고 전송 DeadLetterErrors의 지표. 권한의 부족, 또는 전체 메시지 크기에 제한 대상 대기열 또는 주제를 초과 인해이 문제가 발생하는 이유는, 그것은있을 수 있습니다. 예를 들어, 에러 함수를 발생 2백56킬로바이트 아마존 SNS 통지 트리거에 가까운 본체 경우, 아마존 SNS 람다 초래할 수 속성을 첨가하여 추가 이벤트 데이터를 결합 DLQ 메시지가 허용되는 최대 크기를 초과하는 추가.
당신은 아마존 SQS 큐 DLQ 자체가 아니라 설정 기능 람다에, 이벤트 소스로 아마존 SQS를 사용하는 경우.