0

Dynamotb에 INSERT 또는 UPDATE가있을 때 트리거되는 파이썬 람다 함수가 있습니다. 아시다시피, 스트림 기반 호출입니다. Dynamodb에 삽입 된 1000 개의 레코드가 있고 일괄 처리 크기를 1로 지정하면 람다가 각 레코드를 차례대로 실행합니다. 1000 개의 모든 레코드를 병렬로 실행하기 위해 어떻게 변경합니까 (동시 실행)? 나는 "concurrent.futures import ThreadPoolExecutor"와 같은 추가 파이썬 모듈을 가져와야합니까? (내 코드는 여기에 게시하는 데 실제로 큽니다.)스트림 기반 람다 동시 실행

답변

0

스트림 처리의 병렬 처리를 제어 할 수 없습니다.

AWS DynamoDB 스트림은 DynamoDB 테이블 행을 샤드로 분리합니다. 각 조각은 연속적으로 처리됩니다 (한 번에 하나의 배치). 이는 "순서대로"행을 처리하기위한 것입니다.

그러나 테이블에 쓰기가 많으면 DynamoDB 스트림이 분할되어 더 작은 상위 및 하위 샤드로 분할 될 수 있습니다. 조각은 병렬로 처리 할 수 ​​있습니다.

당신이 할 수있는 최선의 컨트롤은 당신이 당신의 데이터베이스 업데이트가 '당신은 동시에 여러 행 당신을 처리 할 수있는 동시에 처리 할 수 ​​있다고 확신하는 경우 1에서까지 "배치 사이즈"를 증가이다 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html

를 참조하십시오 람다 (Lambda) 함수 내부에 일괄 처리 (batch) 크기가 1보다 커야합니다.

+0

감사합니다. 그것은 효과가있다. – pyhotshot