Lambda로 DynamoDB 레코드 처리 - AWS Lambda

Lambda로 DynamoDB 레코드 처리

이벤트 소스 매핑을 생성하여 Lambda가 스트림의 레코드를 Lambda 함수로 전송하도록 지시합니다. 여러 이벤트 소스 매핑을 생성하여 여러 Lambda 함수로 동일한 데이터를 처리하거나, 단일 함수로 여러 스트림의 항목을 처리할 수 있습니다.

DynamoDB 스트림에서 읽도록 함수를 구성하려면 AWSLambdaDynamoDBExecutionRole AWS 관리형 정책을 실행 역할에 연결한 다음 DynamoDB 트리거를 생성합니다.

권한 추가 및 트리거 생성
  1. Lambda 콘솔의 함수 페이지를 엽니다.

  2. 함수의 이름을 선택합니다.

  3. 구성(Configuration) 탭을 선택한 다음, 권한(Permissions)을 선택합니다.

  4. 역할 이름에서 실행 역할에 대한 링크를 선택합니다. 이 링크를 클릭하면 IAM 콘솔에서 역할이 열립니다.

    실행 역할 링크
  5. 권한 추가를 선택하고 정책 연결을 선택합니다.

    IAM 콘솔에서 정책 연결
  6. 검색 필드에 AWSLambdaDynamoDBExecutionRole를 입력합니다. 실행 역할에 이 정책을 추가합니다. 함수가 DynamoDB 스트림에서 읽는 데 필요한 권한을 포함하는 AWS관리형 정책입니다. 이 정책에 대한 자세한 내용은 AWS 관리형 정책 참조AWSLambdaDynamoDBExecutionRole을 참조하세요.

  7. Lambda 콘솔에서 함수로 돌아갑니다. 함수 개요(Function overview)에서 트리거 추가(Add trigger)를 선택합니다.

    Lambda 콘솔의 함수 개요 섹션
  8. 트리거 유형을 선택합니다.

  9. 필요한 옵션을 구성한 다음 추가를 선택합니다.

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 호출에 대해서는 요금이 부과되지 않습니다.

나중에 이벤트 소스 구성을 관리하기 위해 디자이너에서 트리거를 선택합니다.