최대 동시 Lambda 함수에 도달하면 어떤 일이 발생합니까?

최대 동시 Lambda 함수에 도달하면 어떤 일이 발생합니까?

s3 버킷에 200개의 jsonl(json-lines) 파일이 있습니다. 각 파일에는 DynamoDB에 기록될 100,000개의 JSON이 포함되어 있습니다.

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

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

이를 수행하는 가장 좋은 방법은 무엇입니까?

내 현재 생각은 한 번에 5개의 Lambda를 비동기적으로 호출하고 로그 파일을 모니터링하여 얼마나 많은 작업이 완료되었는지 확인하고 하나가 완료된 후에만 다음 호출을 호출하는 것이었습니다.

또는...

설정할 수 있나요?동시 실행 제한람다 함수의 경우 5로 설정한 다음 함수를 200번(파일당 하나씩) 비동기적으로 호출하시겠습니까? AWS는 람다 작업이 완료되면 자동으로 다음 람다를 트리거합니까?

답변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까지 함수를 쿼리하고 재시도하는 것 같습니다. 시간.

그러나 재시도 간의 지연 기능이 작동하는 방식은 지정하지 않습니다.

관련 정보