Lambda로 Amazon Kinesis Data Streams 레코드 처리
Lambda로 Amazon Kinesis Data Streams 레코드를 처리하려면 Lambda 이벤트 소스 매핑을 생성합니다. Lambda 함수를 표준 반복자나 향상된 팬아웃 소비자에게 매핑할 수 있습니다. 자세한 내용은 폴링 및 배치 처리 스트림 섹션을 참조하세요.
Kinesis 이벤트 소스 매핑 생성
데이터 스트림의 레코드와 함께 Lambda 함수를 간접 호출하려면 이벤트 소스 매핑을 생성합니다. 여러 이벤트 소스 매핑을 생성하여 여러 Lambda 함수로 동일한 데이터를 처리하거나, 단일 함수로 여러 데이터 스트림의 항목을 처리할 수 있습니다. 여러 스트림에서 항목을 처리할 때 각 배치에는 단일 샤드 또는 스트림의 레코드만 포함됩니다.
다른 AWS 계정에서 스트림의 레코드를 처리하도록 이벤트 소스 매핑을 구성할 수 있습니다. 자세한 내용은 계정 간 이벤트 소스 매핑 생성를 참조하세요.
이벤트 소스 매핑을 생성하기 전에 Kinesis 데이터 스트림에서 읽을 수 있는 권한을 Lambda 함수에 부여해야 합니다. Lambda는 Kinesis 데이터 스트림 관련 리소스를 관리하기 위해 다음 권한이 필요합니다.
AWS 관리형 정책 AWSLambdaKinesisExecutionRole에는 다음 권한이 포함됩니다. 다음 절차의 설명에 따라 함수에 해당 관리형 정책을 추가합니다.
참고
-
Kinesis에 대한 이벤트 소스 매핑을 생성하고 관리하는 데
kinesis:ListStreams권한이 필요하지 않습니다. 그러나 이 권한이 없는 경우 콘솔에서 이벤트 소스 매핑을 생성하면 드롭다운 목록에서 Kinesis 스트림을 선택할 수 없으며 콘솔에 오류가 표시됩니다. 이벤트 소스 매핑을 생성하려면 스트림의 Amazon 리소스 이름(ARN)을 수동으로 입력해야 합니다. -
Lambda는 실패한 호출을 다시 시도할 때
kinesis:GetRecords및kinesis:GetShardIteratorAPI 호출을 수행합니다.
필요한 권한을 구성한 후 이벤트 소스 매핑을 생성합니다.
폴링 및 스트리밍 시작 위치
이벤트 소스 매핑 생성 및 업데이트 중 스트림 폴링은 최종적으로 일관됩니다.
-
이벤트 소스 매핑 생성 중 스트림에서 이벤트 폴링을 시작하는 데 몇 분 정도 걸릴 수 있습니다.
-
이벤트 소스 매핑 업데이트 중 스트림에서 이벤트 폴링을 중지했다가 다시 시작하는 데 몇 분 정도 걸릴 수 있습니다.
이 동작은 스트림의 시작 위치로 LATEST를 지정하면 이벤트 소스 매핑이 생성 또는 업데이트 중에 이벤트를 놓칠 수 있음을 의미합니다. 누락된 이벤트가 없도록 하기 위해서는 스트림 시작 위치를 TRIM_HORIZON 또는 AT_TIMESTAMP로 지정하세요.
계정 간 이벤트 소스 매핑 생성
Amazon Kinesis Data Streams는 리소스 기반 정책을 지원합니다. 따라서 다른 계정의 Lambda 함수를 사용하여 스트림으로 수집된 데이터를 하나의 AWS 계정에서 처리할 수 있습니다.
다른 AWS 계정에서 Kinesis 스트림을 사용하여 Lambda 함수에 대한 이벤트 소스 매핑을 생성하려면 리소스 기반 정책을 사용하여 스트림을 구성해서 Lambda 함수에 항목 읽기 권한을 부여합니다. 교차 계정 액세스를 허용하도록 스트림을 구성하는 방법을 알아보려면 Amazon Kinesis Streams 개발자 안내서의 교차 계정 AWS Lambda 함수를 통한 액세스 공유를 참조하세요.
Lambda 함수에 필요한 권한을 부여하는 리소스 기반 정책으로 스트림을 구성하고 나면 이전 섹션에서 설명한 방법 중 하나를 사용하여 이벤트 소스 매핑을 생성합니다.
Lambda 콘솔을 사용하여 이벤트 소스 매핑을 생성하기로 선택한 경우 스트림의 ARN을 입력 필드에 직접 붙여넣기합니다. 스트림의 소비자를 지정하려는 경우 소비자의 ARN을 붙여넣기하면 스트림 필드가 자동으로 채워집니다.