

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# MSK Connect용 EventBridge Kafka 싱크 커넥터 설정
<a name="mkc-eventbridge-kafka-connector"></a>

이 주제에서는 MSK Connect용 [EventBridge Kafka 싱크 커넥터](https://github.com/awslabs/eventbridge-kafka-connector)를 설정하는 방법을 보여줍니다. 이 커넥터를 사용하면 MSK 클러스터에서 EventBridge [이벤트 버스](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html)로 이벤트를 보낼 수 있습니다. 이 주제에서는 필수 리소스를 생성하고 Kafka와 EventBridge 간의 원활한 데이터 흐름을 지원하도록 커넥터를 구성하는 프로세스에 대해 설명합니다.

**Topics**
+ [사전 조건](#mkc-eb-kafka-prerequisites)
+ [MSK Connect에 필요한 리소스 설정](#mkc-eb-kafka-set-up-resources)
+ [커넥터 생성](#mkc-eb-kafka-create-connector)
+ [Kafka로 메시지 전송](#mkc-eb-kafka-send-json-encoded-messages)

## 사전 조건
<a name="mkc-eb-kafka-prerequisites"></a>

커넥터를 배포하기 전에 다음 리소스가 있는지 확인합니다.
+ **Amazon MSK 클러스터**: Kafka 메시지를 생성하고 사용하기 위한 활성 MSK 클러스터입니다.
+ **Amazon EventBridge 이벤트 버스**: Kafka 토픽에서 이벤트를 수신하는 EventBridge 이벤트 버스입니다.
+ **IAM 역할**: MSK Connect 및 EventBridge 커넥터에 필요한 권한이 있는 IAM 역할을 생성합니다.
+ MSK 클러스터의 VPC 및 서브넷에 생성된 EventBridge용 [VPC 인터페이스 엔드포인트](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-related-service-vpc.html) 또는 MSK Connect에서 [퍼블릭 인터넷에 액세스](msk-connect-internet-access.md)합니다. 그러면 NAT 게이트웨이 없이 퍼블릭 인터넷을 통과하지 않아도 됩니다.
+ 토픽을 생성하고 Kafka로 레코드를 전송하는 Amazon EC2 인스턴스 또는 [AWS CloudShell](https://aws.amazon.com/cloudshell/)과 같은 [클라이언트 머신](create-serverless-cluster-client.md)입니다.

## MSK Connect에 필요한 리소스 설정
<a name="mkc-eb-kafka-set-up-resources"></a>

커넥터에 대한 IAM 역할을 생성한 후 커넥터를 생성합니다. 또한 EventBridge 규칙을 생성하여 EventBridge 이벤트 버스로 전송된 Kafka 이벤트를 필터링합니다.

**Topics**
+ [커넥터의 IAM 역할](#mkc-eb-kafka-iam-role-connector)
+ [수신 이벤트에 대한 EventBridge 규칙](#mkc-eb-kafka-create-rule)

### 커넥터의 IAM 역할
<a name="mkc-eb-kafka-iam-role-connector"></a>

커넥터와 연결하는 IAM 역할에는 이벤트를 EventBridge로 전송할 수 있는 [PutEvents](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-permissions-reference.html) 권한이 있어야 합니다. 다음 IAM 정책 예제에서는 `example-event-bus`라는 이벤트 버스로 이벤트를 전송할 수 있는 권한을 부여합니다. 다음 예제의 리소스 ARN을 이벤트 버스의 ARN으로 바꿔야 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "events:PutEvents"
      ],
      "Resource": "arn:aws:events:us-east-1:123456789012:event-bus/example-event-bus"
    }
  ]
}
```

------

또한 커넥터의 IAM 역할에 다음 신뢰 정책이 포함되어 있는지 확인해야 합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "kafkaconnect.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

### 수신 이벤트에 대한 EventBridge 규칙
<a name="mkc-eb-kafka-create-rule"></a>

수신 이벤트를 [https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)이라는 이벤트 데이터 기준과 일치시키는 [규칙](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)을 생성합니다. 이벤트 패턴을 사용하면 수신 이벤트를 필터링하는 기준을 정의하고 특정 규칙을 트리거한 다음 지정된 [대상](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html)으로 라우팅해야 하는 이벤트를 결정할 수 있습니다. 이벤트 패턴의 다음 예제는 EventBridge 이벤트 버스로 전송된 Kafka 이벤트와 일치합니다.

```
{
  "detail": {
    "topic": ["msk-eventbridge-tutorial"]
  }
}
```

다음은 Kafka 싱크 커넥터를 사용하여 Kafka에서 EventBridge로 전송된 이벤트의 예입니다.

```
{
  "version": "0",
  "id": "dbc1c73a-c51d-0c0e-ca61-ab9278974c57",
  "account": "123456789012",
  "time": "2025-03-26T10:15:00Z",
  "region": "us-east-1",
  "detail-type": "msk-eventbridge-tutorial",
  "source": "kafka-connect.msk-eventbridge-tutorial",
  "resources": [],
  "detail": {
    "topic": "msk-eventbridge-tutorial",
    "partition": 0,
    "offset": 0,
    "timestamp": 1742984100000,
    "timestampType": "CreateTime",
    "headers": [],
    "key": "order-1",
    "value": {
      "orderItems": [
        "item-1",
        "item-2"
      ],
      "orderCreatedTime": "Wed Mar 26 10:15:00 UTC 2025"
    }
  }
}
```

EventBridge 콘솔에서 이 예제 패턴을 사용하여 이벤트 버스에 [규칙을 생성](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html)하고 CloudWatch Logs 그룹과 같은 대상을 지정합니다. EventBridge 콘솔은 CloudWatch Logs 그룹에 필요한 액세스 정책을 자동으로 구성합니다.

## 커넥터 생성
<a name="mkc-eb-kafka-create-connector"></a>

다음 섹션에서는 AWS Management Console을 사용하여 [EventBridge Kafka 싱크 커넥터](https://github.com/awslabs/eventbridge-kafka-connector)를 생성하고 배포합니다.

**Topics**
+ [1단계: 커넥터 다운로드](#mkc-eb-kafka-download-connector)
+ [2단계: Amazon S3 버킷 생성](#mkc-eb-kafka-s3-bucket-create)
+ [3단계: MSK Connect에서 플러그인 생성](#mkc-eb-kafka-create-plugin)
+ [4단계: 커넥터 생성](#mkc-eb-kafka-create-connector)

### 1단계: 커넥터 다운로드
<a name="mkc-eb-kafka-download-connector"></a>

EventBridge Kafka 커넥터의 [GitHub 릴리스 페이지](https://github.com/awslabs/eventbridge-kafka-connector/releases)에서 최신 EventBridge 커넥터 싱크 JAR을 다운로드합니다. 예를 들어 버전 v1.4.1을 다운로드하려면 JAR 파일 링크인 `kafka-eventbridge-sink-with-dependencies.jar`를 선택하여 커넥터를 다운로드합니다. 그런 다음 파일을 시스템의 기본 위치에 저장합니다.

### 2단계: Amazon S3 버킷 생성
<a name="mkc-eb-kafka-s3-bucket-create"></a>

1. MSK Connect와 함께 사용하기 위해 Amazon S3에 JAR 파일을 저장하려면를 연 AWS Management Console다음 Amazon S3를 선택합니다.

1. Amazon S3 콘솔에서 **버킷 생성**을 선택하고 고유한 버킷 이름을 입력합니다. 예를 들어 **amzn-s3-demo-bucket1-eb-connector**입니다.

1. Amazon S3 버킷에 적합한 리전을 선택합니다. MSK 클러스터가 배포된 리전과 일치하는지 확인합니다.

1. **버킷 설정**의 경우 기본 선택을 유지하거나 필요에 따라 조정합니다.

1. **버킷 만들기**를 선택합니다.

1. JAR 파일을 Amazon S3 버킷에 업로드합니다.

### 3단계: MSK Connect에서 플러그인 생성
<a name="mkc-eb-kafka-create-plugin"></a>

1. 를 열고 **MSK Connect**로 AWS Management Console이동합니다.

1. 왼쪽 탐색 창에서 **사용자 지정 플러그인**을 선택합니다.

1. **플러그인 생성**을 선택한 후 **플러그인 이름**을 입력합니다. 예를 들어 **eventbridge-sink-plugin**입니다.

1. **사용자 지정 플러그인 위치**에 **S3 객체 URL**을 붙여 넣습니다.

1. 선택 사항으로 플러그인에 대한 설명을 추가합니다.

1. **플러그인 생성**을 선택합니다.

플러그인이 생성된 후 이를 사용하여 MSK Connect에서 EventBridge Kafka 커넥터를 구성하고 배포할 수 있습니다.

### 4단계: 커넥터 생성
<a name="mkc-eb-kafka-create-connector"></a>

커넥터를 생성하기 전에 커넥터 오류를 방지하기 위해 필요한 Kafka 토픽을 생성하는 것이 좋습니다. 토픽을 생성하려면 클라이언트 머신을 사용합니다.

1. MSK 콘솔의 왼쪽 창에서 **커넥터**를 선택한 다음 **커넥터 생성**을 선택합니다.

1. 플러그인 목록에서 **eventbridge-sink-plugin**을 선택한 후 **다음**을 선택합니다.

1. 커넥터 이름에 **EventBridgeSink**를 입력합니다.

1. 클러스터 목록에서 MSK 클러스터를 선택합니다.

1. <a name="connector-ex"></a>커넥터에 대한 다음 구성을 복사하여 **커넥터 구성** 필드에 붙여넣습니다.

   필요에 따라 다음 구성의 자리 표시자를 바꿉니다.
   + MSK 클러스터에 퍼블릭 인터넷 액세스 권한이 있는 경우 `aws.eventbridge.endpoint.uri`를 제거합니다.
   + PrivateLink를 사용하여 MSK에서 EventBridge로 안전하게 연결하는 경우 `https://` 뒤에 있는 DNS 부분을 이전에 생성한 EventBridge에 대한 (선택 사항) VPC 인터페이스 엔드포인트의 올바른 프라이빗 DNS 이름으로 바꿉니다.
   + 다음 구성의 EventBridge 이벤트 버스 ARN을 이벤트 버스의 ARN으로 바꿉니다.
   + 리전별 값을 업데이트합니다.

   ```
   {
     "connector.class": "software.amazon.event.kafkaconnector.EventBridgeSinkConnector",
     "aws.eventbridge.connector.id": "msk-eventbridge-tutorial",
     "topics": "msk-eventbridge-tutorial",
     "tasks.max": "1",
     "aws.eventbridge.endpoint.uri": "https://events.us-east-1.amazonaws.com",
     "aws.eventbridge.eventbus.arn": "arn:aws:events:us-east-1:123456789012:event-bus/example-event-bus",
     "value.converter.schemas.enable": "false",
     "value.converter": "org.apache.kafka.connect.json.JsonConverter",
     "aws.eventbridge.region": "us-east-1",
     "auto.offset.reset": "earliest",
     "key.converter": "org.apache.kafka.connect.storage.StringConverter"
   }
   ```

   커넥터 구성에 대한 자세한 내용은 [eventbridge-kafka-connector](https://github.com/awslabs/eventbridge-kafka-connector)를 참조하세요.

   필요한 경우 작업자 및 자동 규모 조정에 대한 설정을 변경합니다. 또한 드롭다운에서 사용 가능한 최신(권장) Apache Kafka Connect 버전을 사용하는 것이 좋습니다. **액세스 권한**에서 이전에 생성한 역할을 사용합니다. 또한 관찰성 및 문제 해결을 위해 CloudWatch에 대한 로깅을 활성화하는 것이 좋습니다. 필요에 따라 태그와 같은 기타 설정 옵션을 조정합니다. 그런 다음 커넥터를 배포하고 상태가 실행 중으로 변할 때까지 기다립니다.

## Kafka로 메시지 전송
<a name="mkc-eb-kafka-send-json-encoded-messages"></a>

`value.converter` 및 선택적으로 Kafka Connect에서 사용할 수 있는 `key.converter` 설정을 통해 다른 변환기를 지정하여 Apache Avro 및 JSON과 같은 메시지 인코딩을 구성할 수 있습니다.

이 토픽의 [connector example](#connector-ex) 섹션은 `value converter`용 `org.apache.kafka.connect.json.JsonConverter` 사용에서 알 수 있듯이 JSON 인코딩 메시지와 함께 작동하도록 구성됩니다. 커넥터가 실행 중 상태이면 클라이언트 시스템에서 `msk-eventbridge-tutorial` Kafka 토픽으로 레코드를 전송합니다.