자체 관리 Apache Kafka 이벤트 소스용 Lambda 이벤트 소스 매핑 만들기

자체 관리 Apache Kafka 이벤트 소스용 Lambda 이벤트 소스 매핑 만들기 (Creating a Lambda event source mapping for a self-managed Apache Kafka event source)

이벤트 소스 매핑을 만들려면 Lambda 콘솔, AWS Command Line Interface(CLI), 또는 AWS SDK를 사용할 수 있어요.

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

전제 조건

  • 자체 관리 Apache Kafka 클러스터. Lambda는 Apache Kafka 0.10.1.0 이상 버전을 지원해요.
  • 자체 관리 Kafka 클러스터가 쓰는 AWS 리소스에 접근할 권한이 있는 실행 역할(execution role).

출처: AWS Lambda 개발자 안내서

본문

자체 관리 Kafka 클러스터 추가하기 (콘솔)

다음 단계로 자체 관리 Apache Kafka 클러스터와 Kafka 토픽을 Lambda 함수의 트리거로 추가해요.

Lambda 함수에 Apache Kafka 트리거 추가하기 (콘솔)

  1. Lambda 콘솔의 Functions 페이지를 열어요.
  2. Lambda 함수의 이름을 선택해요.
  3. Function overview 아래에서 Add trigger를 선택해요.
  4. Trigger configuration 아래에서 다음을 수행해요.
    • Apache Kafka 트리거 유형을 선택해요.
    • Bootstrap servers에서 클러스터의 Kafka 브로커 호스트·포트 쌍 주소를 입력한 다음 Add를 선택해요. 클러스터의 각 Kafka 브로커에 대해 반복해요.
    • Topic name에서 클러스터에 레코드를 저장하는 데 쓰이는 Kafka 토픽의 이름을 입력해요.
    • 프로비저닝 모드를 구성한다면 Minimum event pollers 값, Maximum event pollers 값, 그리고 같은 이벤트 소스 VPC 내 여러 ESM의 그룹을 지정하는 선택 사항인 PollerGroupName 값을 입력해요.
    • (선택 사항) Batch size에 한 번에 받을 최대 레코드 수를 입력해요.
    • Batch window에서 Lambda가 함수를 호출하기 전에 레코드를 모으는 데 소요하는 최대 초 수를 입력해요.
    • (선택 사항) Consumer group ID에 참여할 Kafka 소비자 그룹의 ID를 입력해요.
    • (선택 사항) Starting position에서 최신 레코드부터 읽기 시작하려면 Latest를, 가장 오래된 레코드부터 시작하려면 Trim horizon을, 특정 타임스탬프부터 읽기 시작하려면 At timestamp를 선택해요.
    • (선택 사항) VPC에서 Kafka 클러스터용 Amazon VPC를 선택한 다음, VPC subnets와 VPC security groups를 선택해요. VPC 안의 사용자만 브로커에 접근한다면 이 설정이 필요해요.
    • (선택 사항) Authentication에서 Add를 선택한 다음 다음을 수행해요. 클러스터의 Kafka 브로커가 쓰는 접근·인증 프로토콜을 선택해요. Kafka 브로커가 SASL/PLAIN 인증을 쓰면 BASIC_AUTH를 선택하고, SASL/SCRAM 인증을 쓰면 SASL_SCRAM 프로토콜 중 하나를 선택하며, mTLS 인증을 구성한다면 CLIENT_CERTIFICATE_TLS_AUTH 프로토콜을 선택해요. SASL/SCRAM 또는 mTLS 인증에는 Kafka 클러스터의 자격 증명이 담긴 Secrets Manager 시크릿 키를 선택해요.
    • (선택 사항) Encryption에서 Kafka 브로커가 프라이빗 CA가 서명한 인증서를 쓰는 경우, 브로커가 TLS 암호화에 쓰는 루트 CA 인증서가 담긴 Secrets Manager 시크릿을 선택해요. 이 설정은 SASL/SCRAM 또는 SASL/PLAIN의 TLS 암호화와 mTLS 인증에 적용돼요.
    • 테스트를 위해 트리거를 비활성화 상태로 만들려면(권장) Enable trigger를 해제해요. 아니면 트리거를 즉시 활성화하려면 Enable trigger를 선택해요.
  5. 트리거를 만들려면 Add를 선택해요.

자체 관리 Kafka 클러스터 추가하기 (AWS CLI)

다음 AWS CLI 명령으로 Lambda 함수용 자체 관리 Apache Kafka 트리거를 만들고 확인해요.

SASL/SCRAM 사용하기

Kafka 사용자가 인터넷을 통해 Kafka 브로커에 접근한다면 SASL/SCRAM 인증용으로 만든 Secrets Manager 시크릿을 지정해요. 다음 예시는 create-event-source-mapping AWS CLI 명령으로 my-kafka-function이라는 Lambda 함수를 AWSKafkaTopic이라는 Kafka 토픽에 매핑해요.

aws lambda create-event-source-mapping \
  --topics AWSKafkaTopic \
  --source-access-configuration Type=SASL_SCRAM_512_AUTH,URI=arn:aws:secretsmanager:us-east-1:111122223333:secret:MyBrokerSecretName \
  --function-name arn:aws:lambda:us-east-1:111122223333:function:my-kafka-function \
  --self-managed-event-source '{"Endpoints":{"KAFKA_BOOTSTRAP_SERVERS":["abc3.xyz.com:9092", "abc2.xyz.com:9092"]}}'

VPC 사용하기

VPC 안의 Kafka 사용자만 Kafka 브로커에 접근한다면 VPC, 서브넷, VPC 보안 그룹을 지정해야 해요. 다음 예시는 create-event-source-mapping AWS CLI 명령으로 my-kafka-function이라는 Lambda 함수를 AWSKafkaTopic이라는 Kafka 토픽에 매핑해요.

aws lambda create-event-source-mapping \
  --topics AWSKafkaTopic \
  --source-access-configuration '[{"Type": "VPC_SUBNET", "URI": "subnet:subnet-0011001100"}, {"Type": "VPC_SUBNET", "URI": "subnet:subnet-0022002200"}, {"Type": "VPC_SECURITY_GROUP", "URI": "security_group:sg-0123456789"}]' \
  --function-name arn:aws:lambda:us-east-1:111122223333:function:my-kafka-function \
  --self-managed-event-source '{"Endpoints":{"KAFKA_BOOTSTRAP_SERVERS":["abc3.xyz.com:9092", "abc2.xyz.com:9092"]}}'

AWS CLI로 상태 보기

다음 예시는 get-event-source-mapping AWS CLI 명령으로 만든 이벤트 소스 매핑의 상태를 설명해요.

aws lambda get-event-source-mapping --uuid dh38738e-992b-343a-1077-3478934hjkfd7

더 알아보기 (Learn more)