최대 동시 Lambda 함수에 도달하면 언제


2

s3 버킷에 200 개의 jsonl (json-lines) 파일이 있습니다. 각 파일에는 DynamoDB에 쓸 10 만 개의 JSON이 포함되어 있습니다.

Lambda를 사용하여 S3에서 파일을 다운로드하고 DynamoDB에 파일을 일괄 적으로 쓰고 싶습니다 (파일이 이미 테이블 스키마와 완벽하게 일치 함).

200 개의 파일이 있지만 동시에 200 개의 람다를 호출 할 수 없습니다. DynamoDB는 초당 10,000 WCU로 제한되어 있기 때문에 초당 10,000 개의 행만 쓸 수 있습니다. 그리고 Lambda는 시간이 초과되기 전에 300 초 동안 만 지속될 수 있습니다.

가장 좋은 방법은 무엇입니까?

내 현재 생각은 한 번에 5 개의 Lambdas를 비동기 적으로 호출하고 로그 파일을 모니터링하여 완료된 후에 만 ​​다음을 호출하는 횟수를 확인하는 것입니까?

또는...

람다 함수에 대해 동시 실행 제한 을 5로 설정 한 다음 함수를 200 번 (각 파일마다 하나씩) 부적절하게 호출 할 수 있습니까? 다음 람다는 완료되면 AWS가 자동으로 트리거합니까?


DynamoDB의 10,000 WCU 제한이 기본값이라는 것을 알 수 있습니다. 제기를 요청할 수 있습니다. 설명서에서 : "AWS는 프로비저닝 할 수있는 처리량에 몇 가지 기본 제한을 설정합니다. 더 많은 양을 요청하지 않는 한 제한입니다. 서비스 제한 증가를 요청하려면 aws.amazon.com/support를 참조하십시오 ."
Kirk

답변:


1

Amazon Docs에서 :

https://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html

Lambda는 함수에 동시성 제한을 설정하여 남은 트래픽 처리량에 관계없이 해당 함수에 할당이 적용되도록 보장합니다. 이 한계를 초과하면 기능이 조절됩니다. 조절할 때 해당 기능이 작동하는 방식은 이벤트 소스에 따라 다릅니다. 자세한 내용은 조절 동작을 참조하십시오.

그런 다음 조절 동작을 다루는 AWS 문서에서 https://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html#throttling-behavior

함수와 관련된 동시성 제한에 도달하면 해당 함수에 대한 추가 호출 요청이 제한됩니다. 즉, 호출이 함수를 실행하지 않습니다. 조절 된 각 호출은 함수에 대한 Amazon CloudWatch Throttles 지표를 증가시킵니다. AWS Lambda는 소스에 따라 조절 된 호출 요청을 다르게 처리합니다.

동기식 호출 : 함수가 동기식으로 호출되고 제한되는 경우 Lambda는 429 오류를 리턴하며 호출 서비스는 재 시도를 담당합니다. ThrottledReason 오류 코드는 함수 레벨 스로틀 (지정된 경우) 또는 계정 레벨 스로틀 (아래 참고 참조)을 실행했는지 여부를 설명합니다. 각 서비스에는 고유 한 재시도 정책이있을 수 있습니다. 예를 들어 CloudWatch Logs는 재시도 간 지연으로 실패한 배치를 최대 5 회 재 시도합니다. 이벤트 소스 및 호출 유형 목록은 지원되는 이벤트 소스를 참조하십시오.

비동기식 호출 : Lambda 함수가 비동기식으로 호출되고 조절 된 경우 AWS Lambda는 조절 된 이벤트를 최대 6 시간 동안 자동으로 재 시도하며 재시도 간격이 지연됩니다. Lambda 함수를 호출하는 데 사용되기 전에 비동기 이벤트가 대기됩니다.

따라서 동시 제한 (모든 기능에서 기본값이 1000으로 설정 됨)을 설정하면 AWS는 429 상태 코드 (요청-응답)를 제공하거나 최대 6 개의 함수를 자동으로 다시 시도하고 재 시도하는 것으로 보입니다. 시간.

재시도 간의 지연 기능 작동 방식을 지정하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.