Amazon MSK 이벤트 소스에 대한 Lambda 이벤트 소스 매핑 만들기

Amazon MSK 이벤트 소스에 대한 Lambda 이벤트 소스 매핑 만들기 (Creating a Lambda event source mapping for an Amazon MSK event source)

이벤트 소스 매핑은 Lambda 콘솔, AWS Command Line Interface(CLI), 또는 AWS SDK로 만들 수 있어요.

참고

이벤트 소스 매핑을 만들 때 Lambda는 MSK 클러스터가 있는 프라이빗 서브넷에 hyperplane ENI를 만들어 Lambda가 보안 연결을 설정할 수 있게 해요. 이 hyperplane ENI는 Lambda 함수가 아니라 MSK 클러스터의 서브넷과 보안 그룹 구성을 사용해요.

다음 콘솔 단계는 Lambda 함수의 트리거로 Amazon MSK 클러스터를 추가해요. 내부적으로 이는 이벤트 소스 매핑 리소스를 만들어요.

출처: AWS Lambda 개발자 안내서

본문

Lambda 함수에 Amazon MSK 트리거를 추가하려면(콘솔)

  1. Lambda 콘솔의 Function 페이지를 엽니다.
  2. Amazon MSK 트리거를 추가할 Lambda 함수의 이름을 선택합니다.
  3. Function overview 아래에서 Add trigger를 선택합니다.
  4. Trigger configuration 아래에서 MSK를 선택합니다.
  5. Kafka 클러스터 세부 정보를 지정합니다.
    • MSK cluster에서 클러스터를 선택합니다.
    • Topic name에 메시지를 소비할 Kafka 토픽 이름을 입력합니다.
    • Consumer group ID에 가입할 Kafka 소비자 그룹의 ID를 입력합니다(해당하는 경우).
  6. Cluster authentication에서 필요한 구성을 합니다.
    • 연결을 설정할 때 Lambda가 MSK 클러스터로 인증을 수행하게 하려면 Use authentication을 켭니다. 인증이 권장됩니다.
    • 인증을 사용한다면 Authentication method에서 사용할 인증 방법을 선택합니다.
    • 인증을 사용한다면 Secrets Manager key에서 클러스터 접근에 필요한 인증 자격 증명이 담긴 Secrets Manager 키를 선택합니다.
  7. Event poller configuration에서 필요한 구성을 합니다.
    • Activate trigger를 선택해 생성 직후 트리거를 활성화합니다.
    • 이벤트 소스 매핑에 대해 provisioned mode를 구성할지 선택합니다.
      • provisioned mode를 구성한다면 Minimum event pollers 값, Maximum event pollers 값, 그리고 같은 이벤트 소스 VPC 내 여러 ESM 그룹화를 지정하는 선택적 PollerGroupName 값을 입력합니다.
    • Starting position에서 Lambda가 스트림에서 읽기를 시작하는 방식을 선택합니다.
  8. Batching에서 필요한 구성을 합니다.
    • Batch size에 단일 배치로 받을 최대 메시지 수를 입력합니다.
    • Batch window에 Lambda가 함수를 호출하기 전에 레코드를 모으는 최대 초 수를 입력합니다.
  9. Filtering에서 필요한 구성을 합니다.
    • Filter criteria에 이벤트를 처리할지 여부를 결정하는 필터 기준 정의를 추가합니다.
  10. Failure handling에서 필요한 구성을 합니다.
    • On-failure destination에 실패 시 대상(on-failure destination)의 ARN을 지정합니다.
  11. Tags에 이 이벤트 소스 매핑과 연결할 태그를 입력합니다.
  12. 트리거를 만들려면 Add를 선택합니다.

AWS CLI로 create-event-source-mapping 명령을 사용해 이벤트 소스 매핑을 만들 수도 있어요. 다음 예시는 my-msk-function Lambda 함수를 AWSKafkaTopic 토픽에 매핑하고 LATEST 메시지부터 시작하는 이벤트 소스 매핑을 만들어요. 이 명령은 SourceAccessConfiguration 객체로 Lambda가 클러스터에 연결할 때 SASL/SCRAM 인증을 사용하도록 지시해요.

aws lambda create-event-source-mapping \
  --event-source-arn arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2 \
  --topics AWSKafkaTopic \
  --starting-position LATEST \
  --function-name my-kafka-function
  --source-access-configurations '[{"Type": "SASL_SCRAM_512_AUTH","URI": "arn:aws:secretsmanager:us-east-1:111122223333:secret:my-secret"}]'

클러스터가 mTLS 인증을 사용한다면 CLIENT_CERTIFICATE_TLS_AUTH와 Secrets Manager 키 ARN을 지정하는 SourceAccessConfiguration 객체를 포함해요. 다음 명령으로 이뤄져요.

aws lambda create-event-source-mapping \
  --event-source-arn arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2 \
  --topics AWSKafkaTopic \
  --starting-position LATEST \
  --function-name my-kafka-function
  --source-access-configurations '[{"Type": "CLIENT_CERTIFICATE_TLS_AUTH","URI": "arn:aws:secretsmanager:us-east-1:111122223333:secret:my-secret"}]'

클러스터가 IAM 인증을 사용한다면 SourceAccessConfiguration 객체가 필요 없어요. 다음 명령으로 이뤄져요.

aws lambda create-event-source-mapping \
  --event-source-arn arn:aws:kafka:us-east-1:111122223333:cluster/my-cluster/fc2f5bdf-fd1b-45ad-85dd-15b4a5a6247e-2 \
  --topics AWSKafkaTopic \
  --starting-position LATEST \
  --function-name my-kafka-function

더 알아보기 (Learn more)