교차 계정 Kinesis 스트림을 사용하여 Lambda 함수를 호출하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 12월 16일

다른 AWS 계정에 있는 Amazon Kinesis 스트림을 사용하여 AWS Lambda 함수를 호출하려고 합니다. 어떻게 설정해야 하나요?

간략한 설명

Lambda는 현재 Kinesis 또는 모든 스트림 기반 소스의 교차 계정 트리거를 지원하지 않습니다.

해결 방법으로 Kinesis 스트림(계정 1)과 동일한 계정에 "poller" Lambda 함수를 생성할 수 있습니다. 그런 다음 다른 계정(계정 2)에서 두 번째 "processor" Lambda 함수를 호출하도록 함수를 구성합니다.

경고: 이 구성은 Kinesis Data Streams 사용의 많은 이점을 제거합니다. 이 절차를 완료한 후에는 레코드를 블록하거나 샤드 내에서 순차적 순서를 생성할 수 없습니다. 이 해결 방법은 애플리케이션에 이러한 기능이 필요하지 않은 경우에만 사용하는 것이 모범 사례입니다.

해결 방법

Kinesis 스트림(계정 1)과 동일한 계정에 "poller" Lambda 함수를 구성합니다.

1.    실행 역할을 포함하는 계정 1에서 Lambda 함수를 생성합니다.

참고: Lambda 콘솔을 사용하거나 자체 배포 패키지를 구축 및 업로드하여 함수를 생성할 수 있습니다.

2.    Kinesis 스트림에 필요한 권한을 함수의 실행 역할에 추가합니다.

3.    Kinesis 스트림을 함수의 이벤트 소스로 구성합니다.

중요: 이벤트 소스 매핑을 생성할 때 Lambda 함수와 Kinesis 스트림은 동일한 계정에 있어야 합니다.

두 번째 계정(계정 2)에서 “processor” Lambda 함수 구성하기

1.    계정 2에서 Lambda 함수를 생성합니다. 이 계정은 실행 역할을 포함합니다.

2.    계정 2에서 AWS Identity and Access Management(IAM) 역할을 생성합니다(호출 역할).

참고: 이 호출 역할은 계정 1의 "poller" 함수에서 계정 2의 "processor" 함수를 호출하는 것으로 가정합니다.

3.    다음과 같은 방법으로 계정 2에서 호출 역할의 정책을 수정합니다.

  • 호출 역할 허가를 부여하여 계정 2의 "processor" Lambda 함수를 호출합니다(lambda:InvokeFunction 작업 사용).
  • 신뢰 관계를 편집하여 "poller" Lambda 함수의 실행 역할이 계정 2의 호출 역할을 수임할 수 있도록 합니다.

자세한 내용은 Identity-based IAM policies for AWS Lambda를 참조하세요. 또한 AWS 서비스에 대한 권한을 위임할 역할 생성합니다.

계정 1에서 "poller" Lambda 함수를 구성하여 계정 2에서 호출 역할을 수임하도록 합니다.

1.    계정 1 허가의 실행 역할 정책에 AssumeRole API를 호출하고, 계정 2에서 호출 역할을 수임할 수 있는 권한을 부여합니다. sts:AssumeRole 작업을 사용해야 합니다. 자세한 내용은 사용자에게 역할 전환 권한 부여 단원을 참조하십시오.

2.    계정 1의 "poller" 함수를 업데이트하여 다음을 수행합니다.

  • 계정 2의 호출 역할을 수임합니다. 지침은 IAM 역할(AWS API)로 전원하기 단원을 참조하십시오.
  • Kinesis의 입력 이벤트를 계정 2의 "processor" 함수로 전달합니다. 기능이 입력 이벤트를 전달하도록 하려면 서비스 클라이언트를 인스턴스화하고, 적절한 SDK 메서드를 사용하여 비동기식 호출(Event 호출 유형)을 요청하는 방법을 사용합니다.
    참고: 호출할 적절한 SDK 메서드를 확인하려면 런타임에 대한 SDK 설명서를 참조하십시오.

3.    계정 2의 함수에 대한 배달 못한 편지 대기열(DLQ)을 구성합니다. 이렇게 하면 함수 오류가 발생할 경우 누락된 이벤트를 조사하거나 재시도할 수 있습니다.

실패한 이벤트 레코드의 대상 구성

계정 1의 "poller" 함수에 대하여 설정된 이벤트 소스에 대해 실패한 이벤트 레코드의 대상을 구성합니다.

참고: 실패한 이벤트 레코드에 대한 대상을 구성하면, Lambda가 삭제된 레코드에 대한 세부 정보를 대상 대기열 또는 주제로 전송하도록 지시합니다.