Lambda로 DynamoDB 레코드 처리
이벤트 소스 매핑을 생성하여 Lambda가 스트림의 레코드를 Lambda 함수로 전송하도록 지시합니다. 여러 이벤트 소스 매핑을 생성하여 여러 Lambda 함수로 동일한 데이터를 처리하거나, 단일 함수로 여러 스트림의 항목을 처리할 수 있습니다.
다른 AWS 계정에서 스트림의 레코드를 처리하도록 이벤트 소스 매핑을 구성할 수 있습니다. 자세한 내용은 계정 간 이벤트 소스 매핑 생성를 참조하세요.
DynamoDB 스트림에서 읽도록 함수를 구성하려면 AWSLambdaDynamoDBExecutionRole AWS 관리형 정책을 실행 역할에 연결한 다음 DynamoDB 트리거를 생성합니다.
권한 추가 및 트리거 생성
Lambda 콘솔의 함수 페이지
를 엽니다. -
함수의 이름을 선택합니다.
-
구성(Configuration) 탭을 선택한 다음, 권한(Permissions)을 선택합니다.
-
역할 이름에서 실행 역할에 대한 링크를 선택합니다. 이 링크를 클릭하면 IAM 콘솔에서 역할이 열립니다.
-
권한 추가를 선택하고 정책 연결을 선택합니다.
-
검색 필드에
AWSLambdaDynamoDBExecutionRole를 입력합니다. 실행 역할에 이 정책을 추가합니다. 함수가 DynamoDB 스트림에서 읽는 데 필요한 권한을 포함하는 AWS관리형 정책입니다. 이 정책에 대한 자세한 내용은 AWS 관리형 정책 참조의 AWSLambdaDynamoDBExecutionRole을 참조하세요. -
Lambda 콘솔에서 함수로 돌아갑니다. 함수 개요(Function overview)에서 트리거 추가(Add trigger)를 선택합니다.
-
트리거 유형을 선택합니다.
-
필요한 옵션을 구성한 다음 추가를 선택합니다.
Lambda는 DynamoDB 이벤트 소스에 대해 다음 옵션을 지원합니다.
이벤트 소스 옵션
-
DynamoDB 테이블 – 레코드를 읽을 DynamoDB 테이블입니다.
-
배치 크기(Batch size) - 각 배치에서 함수에 보낼 레코드 수입니다(최대 10,000개). Lambda는 한 번의 호출로 배치의 모든 레코드를 함수에 전달합니다. 단, 이벤트의 총 크기가 동기식 호출에 대한 페이로드 한도(6MB)를 초과하지 않아야 합니다.
배치 기간(Batch window) - 함수를 호출하기 전에 레코드를 수집할 최대 기간(단위: 초)를 지정합니다.
-
시작 위치 – 새 레코드만, 또는 기존의 모든 레코드를 처리합니다.
-
최신 – 스트림에 추가된 새 레코드를 처리합니다.
-
수평 트리밍 – 스트림의 모든 레코드를 처리합니다.
기존 레코드 처리 후 함수는 캐치업되고 새 레코드를 계속 처리합니다.
-
On-failure destination(실패 시 대상) – 처리할 수 없는 레코드에 대한 표준 SQS 대기열 또는 표준 SNS 주제입니다. 너무 오래되었거나 모든 재시도를 다 사용한 레코드 배치를 폐기할 때, Lambda는 해당 배치에 대한 세부 정보를 대기열 또는 주제로 보냅니다.
Retry attempts(재시도) - 함수가 오류를 반환할 때 Lambda에서 재시도하는 최대 횟수입니다. 이는 배치가 함수에 도달하지 않은 제한 또는 서비스 오류에 적용되지 않습니다.
Maximum age of record(최대 레코드 사용 기간) – Lambda에서 함수로 보내는 최대 레코드 사용 기간입니다.
Split batch on error(오류 시 배치 분할) – 함수에서 오류를 반환하면 재시도하기 전에 배치를 두 개로 분할합니다. 원래 배치 크기 설정은 변경되지 않습니다.
Concurrent batches per shard(샤드당 동시 배치) – 동일한 샤드의 여러 배치를 동시에 처리합니다.
-
활성화 – 이벤트 소스 매핑을 활성화하려면 true로 설정합니다. 레코드 처리를 중지하려면 false로 설정합니다. Lambda는 마지막으로 처리된 레코드를 추적하여 매핑이 다시 활성화되면 해당 지점부터 처리를 다시 시작합니다.
참고
DynamoDB 트리거의 일부로 Lambda에서 간접 호출한 GetRecords API 간접 호출에 대해서는 요금이 부과되지 않습니다.
나중에 이벤트 소스 구성을 관리하기 위해 디자이너에서 트리거를 선택합니다.
계정 간 이벤트 소스 매핑 생성
Amazon DynamoDB는 이제 리소스 기반 정책을 지원합니다. 이 기능을 사용하면 한 AWS 계정에서 다른 계정의 Lambda 함수를 사용하여 DynamoDB 스트림의 데이터를 처리할 수 있습니다.
다른 AWS 계정에서 DynamoDB 스트림을 사용하여 Lambda 함수에 대한 이벤트 소스 매핑을 생성하려면 리소스 기반 정책을 사용하여 스트림을 구성해서 Lambda 함수에 레코드 읽기 권한을 부여합니다. 교차 계정 액세스를 허용하도록 스트림을 구성하는 방법을 자세히 알아보려면 Amazon DynamoDB 개발자 안내서의 교차 계정 Lambda 함수를 통한 액세스 공유를 참조하세요.
스트림에서 Lambda 함수에 필요한 권한을 부여하는 리소스 기반 정책을 구성한 후에는 교차 계정 스트림 ARN을 사용하여 이벤트 소스 매핑을 생성합니다. 교차 계정 DynamoDB 콘솔의 테이블 내보내기 및 스트림 탭에서 스트림 ARN을 찾을 수 있습니다.
Lambda 콘솔을 사용하는 경우 이벤트 소스 매핑 생성 페이지의 DynamoDB 테이블 입력 필드에 스트림 ARN을 직접 붙여넣습니다.
참고: 교차 리전 트리거는 지원되지 않습니다.