1

람다 함수를 트리거하는 DynamoDB 스트림이 있습니다. 나는 DynamoDB 테이블에 수천 번에 달하는 파열로 인해 Lambda가 처리 할 수있는 많은 시간 (최장 30 분이 소요될 수 있음)을 알 수 있습니다. 일괄 처리 크기가 3 인 각 람다 호출의 평균 지속 시간은 약 2 초입니다. 이러한 Lambda는 I/O가 많은 작업을 수행하므로 작은 일괄 처리 크기와 더 많은 수의 병렬 호출이 유리합니다. 그러나 이러한 Lambdas의 병렬 처리는 DynamoDB 스트림 파편의 개수와 관련이 있지만 파편 개수를 조정할 수있는 방법을 찾을 수 없습니다.DynamoDB Stream + Lambda 처리량 늘리기

더 큰 배치 크기와 더 최적화 된 코드를 사용하는 것 외에 이러한 Lambdas의 처리량을 늘릴 수있는 방법이 있습니까?

답변

1

각 스트림 샤드는 DynamoDB의 파티션과 연관됩니다. 테이블의 처리량이 너무 많아서 partitions to split이 발생하면 파편이 더 많이 발생합니다. 샤드가 많을수록 병렬로 실행되는 람다 함수의 수가 증가합니다.

+0

"각 스트림 조각이 DynamoDB의 파티션과 연결되어 있습니다"라는 정보가 포함 된 문서에 링크를 추가 할 수 있습니까? 나는 그것을 찾기 위해 고심하고있다. –

+0

[This] (https://docs.aws.amazon.com/streams/latest/dev/key-concepts.html)는 Kinesis 스트림이지만 동일하거나 유사한 지 확실하지 않습니다. 누군가 람다가 당신을 대신해 키네 시스 (Kinesis) 스트림 클라이언트를 사용할 것이라고 말했습니다. – HenryLok

1

많은 구성 옵션이 표시되지 않습니다.

처리를 분리 할 수 ​​있습니다. 변경 기록이 너무 크지 않으면 들어오는 람다가 몇 개의 작은 SNS 메시지로 분할 할 수 있습니다. 각각의 작은 SNS 메시지는 실제 프로세싱을 수행하는 Lambda를 트리거 할 수 있습니다. 변경 사항이 더 큰 경우 SQS 또는 S3을 사용하고 SNS를 통해 또는 새 파일에 대해 람다 처리를 트리거 할 수 있습니다.