

# Amazon MSK 이벤트 소스에 대한 Lambda 이벤트 소스 매핑 생성
<a name="msk-esm-create"></a>

이벤트 소스 매핑을 생성하려면 Lambda 콘솔, [AWS Command Line Interface(CLI)](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 또는 [AWS SDK](https://aws.amazon.com/getting-started/tools-sdks/)를 사용할 수 있습니다.

**참고**  
이벤트 소스 매핑을 생성하면 Lambda는 MSK 클러스터가 포함된 프라이빗 서브넷에 [하이퍼플레인 ENI](configuration-vpc.md#configuration-vpc-enis)를 생성하여 Lambda가 보안 연결을 설정할 수 있도록 합니다. 이 하이퍼플레인 ENI는 Lambda 함수가 아닌 MSK 클러스터의 서브넷과 보안 그룹 구성을 사용합니다.

다음 콘솔 단계에서는 Amazon MSK 클러스터를 Lambda 함수의 트리거로 추가합니다. 그러면 내부적으로 이벤트 소스 매핑 리소스가 생성됩니다.

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

1. Lambda 콘솔의 [함수 페이지](https://console.aws.amazon.com/lambda/home#/functions)를 엽니다.

1. Amazon MSK 트리거를 추가할 Lambda 함수의 이름을 선택합니다.

1. **함수 개요(Function overview)**에서 **트리거 추가(Add trigger)**를 선택합니다.

1. **트리거 구성**에서 **MSK**를 선택합니다.

1. Kafka 클러스터 세부 정보를 지정하려면 다음을 수행합니다.

   1. **MSK 클러스터**에 해당 클러스터를 선택합니다.

   1. **주제 이름**에 메시지를 사용할 Kafka 주제의 이름을 입력합니다.

   1. **소비자 그룹 ID**에서 가입할 Kafka 소비자 그룹의 ID(해당되는 경우)를 입력합니다. 자세한 내용은 [Lambda에서 사용자 지정이 가능한 소비자 그룹 ID](kafka-consumer-group-id.md) 섹션을 참조하세요.

1. **클러스터 인증**에 대해 필요에 따라 구성합니다. 클러스터 인증에 대한 자세한 내용은 [Lambda에서 Amazon MSK 클러스터 인증 방법 구성](msk-cluster-auth.md) 섹션을 참조하세요.
   + 연결을 설정할 때 Lambda가 MSK 클러스터로 인증을 수행하도록 하려면 **인증 사용**을 켭니다. 인증이 권장됩니다.
   + 인증을 사용하는 경우 **인증 방법**에서 사용할 인증 방법을 선택합니다.
   + 인증을 사용하는 경우 **Secrets Manager 키**에서 클러스터에 액세스하는 데 필요한 인증 자격 증명이 포함된 Secrets Manager 키를 선택합니다.

1. **이벤트 폴러 구성**에서 필요에 따라 구성합니다.
   + 생성 직후 트리거를 활성화하려면 **트리거 활성화**를 선택합니다.
   + 이벤트 소스 매핑에 대해 **프로비저닝된 모드를 구성**할지 여부를 선택합니다. 자세한 내용은 [Lambda에서의 Apache Kafka 이벤트 폴러 스케일링 모드](kafka-scaling-modes.md) 섹션을 참조하세요.
     + 프로비저닝 모드를 구성하는 경우 **최소 이벤트 폴러**의 값, **최대 이벤트 폴러**의 값, PollerGroupName 값(선택 사항)을 입력하여 동일한 이벤트 소스 VPC 내에서 여러 ESM의 그룹화를 지정합니다.
   + **시작 위치**에서 Lambda가 스트림에서 읽기를 시작하는 방법을 선택합니다. 자세한 내용은 [Lambda에서의 Apache Kafka 폴링 및 스트림 시작 위치](kafka-starting-positions.md) 섹션을 참조하세요.

1. **배치 처리**에서 필요에 따라 구성합니다. 일괄 처리에 대한 자세한 내용은 [일괄 처리 동작](invocation-eventsourcemapping.md#invocation-eventsourcemapping-batching) 섹션을 참조하세요.

   1. **배치 크기(Batch size)**에 단일 배치에서 검색할 최대 메시지 수를 입력합니다.

   1. **배치 창**에서 Lambda가 함수를 간접적으로 호출하기 전에 레코드를 수집하는 데 걸리는 최대 시간(초)을 입력합니다.

1. **필터링**에서 필요에 따라 구성합니다. 필터링에 대한 자세한 내용은 [Amazon MSK 및 자체 관리형 Apache Kafka 이벤트 소스에서 이벤트 필터링](kafka-filtering.md) 섹션을 참조하세요.
   + **필터 기준**에서 필터 기준 정의를 추가하여 이벤트를 처리할지 여부를 결정합니다.

1. **장애 처리**에서 필요에 따라 구성합니다. 장애 처리에 대한 자세한 내용은 [Amazon MSK 및 자체 관리형 Apache Kafka 이벤트 소스에 대한 폐기된 배치 캡처](kafka-on-failure.md) 섹션을 참조하세요.
   + **장애 시 대상**에서 장애 시 대상의 ARN을 지정합니다.

1. **태그**에 이 이벤트 소스 매핑과 연결할 태그를 입력합니다.

1. 트리거를 생성하려면 **추가**를 선택합니다.

[create-event-source-mapping](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-event-source-mapping.html) 명령과 함께 AWS CLI를 사용하여 이벤트 소스 매핑을 생성할 수도 있습니다. 다음 예시에서는 `LATEST` 메시지부터 시작하여 Lambda 함수 `my-msk-function`을 `AWSKafkaTopic` 주제에 매핑하는 이벤트 소스 매핑을 생성합니다. 또한 이 명령은 [SourceAccessConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_SourceAccessConfiguration.html) 객체를 사용하여 클러스터에 연결할 때 [SASL/SCRAM](msk-cluster-auth.md#msk-sasl-scram) 인증을 사용하도록 Lambda에 지시합니다.

```
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 authentication](msk-cluster-auth.md#msk-mtls)을 사용하는 경우 [SourceAccessConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_SourceAccessConfiguration.html) 객체를 포함하며 이는 `CLIENT_CERTIFICATE_TLS_AUTH` 및 Secrets Manager 키 ARN을 지정합니다. 다음 명령을 참조하세요.

```
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 인증](msk-cluster-auth.md#msk-iam-auth)을 사용하는 경우 [ SourceAccessConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_SourceAccessConfiguration.html) 객체가 필요하지 않습니다. 다음 명령을 참조하세요.

```
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
```