DynamoDB Streams 및 AWS Lambda 트리거
Amazon DynamoDB는 DynamoDB Streams의 이벤트에 자동으로 응답하는 코드 조각인 트리거를 만들 수 있도록 AWS Lambda와 통합되어 있습니다. 트리거를 사용하면 DynamoDB 테이블의 데이터 수정에 응답하는 애플리케이션을 빌드할 수 있습니다.
주제
테이블에서 DynamoDB Streams를 활성화할 경우 스트림 Amazon 리소스 이름(ARN)을 사용자가 작성하는 AWS Lambda 함수에 연결할 수 있습니다. 그러면 해당 DynamoDB 테이블에 대한 모든 변형 작업을 스트림의 항목으로 캡처할 수 있습니다. 예를 들어, 테이블의 항목이 수정될 때 새 레코드가 해당 테이블의 스트림에 즉시 나타나도록 트리거를 설정할 수 있습니다.
참고
하나의 DynamoDB 스트림에 3개 이상의 Lambda 함수를 구독하는 경우 읽기 제한이 발생할 수 있습니다.
AWS Lambda 서비스는 초당 4번 새 레코드에 대한 스트림을 폴링합니다. 새 스트림 레코드를 사용할 수 있게 되면 Lambda 함수가 동기식으로 호출됩니다. 동일한 DynamoDB 스트림에 최대 2개의 Lambda 함수를 구독할 수 있습니다. 동일한 DynamoDB 스트림에 3개 이상의 Lambda 함수를 구독하는 경우 읽기 제한이 발생할 수 있습니다.
Lambda 함수는 알림을 보내거나 워크플로를 시작하거나 사용자가 지정하는 기타 여러 작업을 수행할 수 있습니다. 각 스트림 레코드를 Amazon S3 File Gateway(Amazon S3)와 같은 영구 스토리지에 간단하게 복사하는 Lambda 함수를 작성하여 테이블의 쓰기 작업에 대한 영구 감사 추적을 만들 수 있습니다. GameScores
테이블에 쓰는 모바일 게임 앱이 있다고 가정해 보겠습니다. GameScores
테이블의 TopScore
속성이 업데이트될 때마다 해당하는 스트림 레코드가 테이블 스트림에 기록됩니다. 그런 다음 이 이벤트는 소셜 미디어 네트워크에 축하 메시지를 게시하는 Lambda 함수를 트리거합니다. 이 함수는 GameScores
에 업데이트되지 않거나 TopScore
속성을 수정하지 않는 모든 스트림 레코드를 무시하도록 작성할 수도 있습니다.
함수가 오류를 반환하면 Lambda는 성공적으로 처리되거나 데이터가 만료될 때까지 배치(batch)를 재시도합니다. 또한 더 작은 배치로 재시도하고, 재시도 횟수를 제한하고, 너무 오래된 레코드를 폐기하고, 기타 옵션을 사용하도록 Lambda를 구성할 수 있습니다.
성능 모범 사례에 따라 Lambda 함수는 수명이 짧아야 합니다. 불필요한 처리 지연을 방지하기 위해 복잡한 로직도 실행하지 않아야 합니다. 특히 고속 스트림의 경우 장기 실행 중인 동기식 Lambda보다 비동기식 사후 처리 단계 함수 워크플로를 트리거하는 것이 좋습니다.
여러 AWS 계정에서 동일한 Lambda 트리거를 사용할 수 없습니다. DynamoDB 테이블과 Lambda 함수는 모두 동일한 AWS 계정에 속해야 합니다.
AWS Lambda에 대한 자세한 내용은 AWS Lambda 개발자 안내서 섹션을 참조하세요.