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

최종 업데이트 날짜: 2019년 8월 5일

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

간략한 설명

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

이 문제를 해결하려면 Kinesis 스트림과 동일한 계정(계정 A)에서 "poller" Lambda 함수를 사용하여 다른 계정(계정 B)의 "processor" Lambda 함수를 호출할 수 있습니다.

경고: 이 구성을 사용하면 Kinesis 데이터 스트림을 사용하여 얻을 수 있는 많은 이점(예: 샤드 내 레코드의 순차 순서 지정 및 차단)이 사라집니다. 이 해결 방법은 애플리케이션에 이러한 기능이 필요하지 않은 경우에만 사용하는 것이 좋습니다.

해결 방법

계정 A에서 Lambda 함수 구성

  1. 계정 A에서 실행 역할을 사용하여 Lambda 함수를 생성합니다.
    참고: Lambda 콘솔을 사용하거나 자체 배포 패키지를 구축 및 업로드하여 함수를 생성할 수 있습니다.
  2. 계정 A의 실행 역할에 Kinesis 스트림과 관련된 권한을 부여합니다.
  3. Kinesis 스트림을 이벤트 소스로 구성합니다.
    중요: 이벤트 소스 매핑을 생성할 때 Lambda 함수와 Kinesis 스트림은 동일한 계정에 있어야 합니다.

계정 B에서 Lambda 함수 구성

  1. 계정 B에서 실행 역할을 사용하여 Lambda 함수를 생성합니다.
  2. 계정 B에서 AWS Identity and Access Management(IAM) 역할을 생성합니다. 이 “호출 역할”은 계정 A의 함수가 계정 B의 함수를 호출할 때 사용됩니다.
  3. 호출 역할의 정책을 다음과 같이 수정합니다.
    동일한 계정(계정 B)의 Lambda 함수에 호출 권한을 부여합니다(lambda:InvokeFunction 작업 사용).
    신뢰 관계를 편집하여 계정 A의 실행 역할이 호출 역할을 가정할 수 있도록 합니다.

자세한 내용은 AWS Lambda에 대한 자격 증명 기반 IAM 정책AWS 서비스에 대한 권한을 위임할 역할 생성을 참조하십시오.

구성 업데이트

  1. 계정 A의 실행 역할에 대한 정책을 수정합니다. AssumeRole API를 호출할 권한을 이 역할에 부여하여(sts:AssumeRole 작업 사용) 계정 B의 실행 역할을 가정할 수 있도록 합니다. 자세한 내용은 사용자에 대한 역할 전환 권한 부여를 참조하십시오.
  2. 계정 A에 있는 Lambda 함수의 코드를 업데이트하여 다음을 수행하도록 합니다.
    계정 B의 호출 역할을 가정합니다. 자세한 내용과 예제는 IAM 역할(AWS API)로 전환하기를 참조하십시오.
    서비스 클라이언트를 인스턴스화하고 적절한 SDK 메서드를 사용하여 비동기식 호출(Event 호출 유형)을 요청하는 방법으로 함수 A의 입력 이벤트를 계정 B의 함수로 전달합니다.
    참고: 호출할 SDK 메서드를 확인하려면 런타임에 대한 SDK 설명서를 참조하십시오.
  3. 계정 B의 함수에 대해 DLQ(배달 못한 편지 큐)를 구성합니다. 이렇게 하면 함수 오류가 발생할 때 누락된 이벤트를 조사하거나 재시도할 수 있습니다.