

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

# MSK Connect 시작하기
<a name="msk-connect-getting-started"></a>

이 자습서는 AWS Management Console 를 사용하여 MSK 클러스터와 클러스터에서 S3 버킷으로 데이터를 전송하는 싱크 커넥터를 생성하는 step-by-step 자습서입니다.

**Topics**
+ [MSK Connect에 필요한 리소스 설정](mkc-tutorial-setup.md)
+ [사용자 지정 플러그인 생성](mkc-create-plugin.md)
+ [클라이언트 머신 및 Apache Kafka 주제 생성](mkc-create-topic.md)
+ [커넥터 생성](mkc-create-connector.md)
+ [MSK 클러스터로 데이터 전송](mkc-send-data.md)

# MSK Connect에 필요한 리소스 설정
<a name="mkc-tutorial-setup"></a>

이 단계에서는 시작하기 시나리오에 필요한 다음 리소스를 생성합니다.
+ 커넥터에서 데이터를 수신하는 대상 역할을 하는 Amazon S3 버킷.
+ 데이터를 전송할 MSK 클러스터로, 이후 커넥터가 해당 클러스터에서 데이터를 읽고 대상 S3 버킷으로 전송함
+ 대상 S3 버킷에 작성할 수 있는 권한이 포함된 IAM 정책.
+ 커넥터가 대상 S3 버킷에 쓸 수 있도록 허용하는 IAM 역할 생성하는 IAM 정책을 이 역할에 추가합니다.
+ 클러스터와 커넥터가 있는 Amazon VPC에서 Amazon S3로 데이터를 전송할 수 있도록 하는 Amazon VPC 엔드포인트

**S3 버킷을 만들려면 다음을 수행합니다.**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) Amazon S3 콘솔을 엽니다.

1. **버킷 생성**을 선택합니다.

1. 버킷의 이름에 설명이 포함된 이름을 입력합니다(예: `amzn-s3-demo-bucket-mkc-tutorial`).

1. 아래로 스크롤하여 **버킷 생성**을 선택합니다.

1. 버킷 목록에서 새로 생성한 버킷을 선택합니다.

1. **폴더 생성**을 선택합니다.

1. 폴더 이름에 `tutorial`을 입력한 다음 아래로 스크롤하여 **폴더 생성**을 선택합니다.

**클러스터를 생성하려면 다음을 수행합니다.**

1. [https://console.aws.amazon.com/msk/home?region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/)에서 Amazon MSK 콘솔을 엽니다.

1. 왼쪽 창의 **MSK 클러스터**에서 **클러스터**를 선택합니다.

1. **클러스터 생성**을 선택합니다.

1. **생성 방법**에서 **사용자 지정 생성**을 선택합니다.

1. 클러스터 이름에 **mkc-tutorial-cluster**를 입력합니다.

1. **클러스터 유형**에서 **프로비저닝**을 선택합니다.

1. **다음**을 선택합니다.

1. **네트워킹**에서 Amazon VPC를 선택합니다. 그런 다음 사용하려는 가용 영역과 서브넷을 선택합니다. 자습서의 뒷부분에서 필요하므로 선택한 Amazon VPC와 서브넷의 ID를 기억해 둡니다.

1. **다음**을 선택합니다.

1. **액세스 제어 방법**에서는 **인증되지 않은 액세스**만 선택되도록 합니다.

1. **암호화**에서 **일반 텍스트**만 선택했는지 확인합니다.

1. 마법사를 계속 진행한 다음 **클러스터 생성**을 선택합니다. 그러면 해당 클러스터에 대한 세부 정보 페이지로 이동합니다. 해당 페이지의 **적용된 보안 그룹**에서 보안 그룹 ID를 찾습니다. 자습서의 뒷부분에서 필요하므로 해당 ID를 기억해 둡니다.

**S3 버킷에 작성할 수 있는 권한이 있는 IAM 정책 생성**

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 탐색 창에서 **정책**을 선택합니다.

1. **정책 생성**을 선택합니다.

1. **정책 편집기**에서 **JSON**을 선택한 후 편집기 창의 JSON을 다음 JSON으로 변경합니다.

   다음 예제에서는 *<amzn-s3-demo-bucket-my-tutorial>*을 S3 버킷의 이름으로 바꿉니다.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowListBucket",
         "Effect": "Allow",
         "Action": [
           "s3:ListBucket",
           "s3:GetBucketLocation"
         ],
         "Resource": "arn:aws:s3:::<amzn-s3-demo-bucket-my-tutorial>"
       },
       {
         "Sid": "AllowObjectActions",
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:GetObject",
           "s3:DeleteObject",
           "s3:AbortMultipartUpload",
           "s3:ListMultipartUploadParts",
           "s3:ListBucketMultipartUploads"
         ],
         "Resource": "arn:aws:s3:::<amzn-s3-demo-bucket-my-tutorial>/*"
       }
     ]
   }
   ```

------

   보안 정책을 작성하는 방법에 대한 지침은 [IAM 액세스 제어](iam-access-control.md) 섹션을 참조하세요.

1. **다음**을 선택합니다.

1. **검토 및 생성** 페이지에서 다음을 수행합니다.

   1. **정책 이름**에 설명이 포함된 이름을 입력합니다(예: **mkc-tutorial-policy**).

   1. **이 정책에 정의된 권한**에서 정책에 정의된 권한을 검토 및/또는 편집합니다.

   1. (선택 사항) 정책을 식별, 구성 또는 검색하는 데 도움이 되도록 **새 태그 추가**를 선택하여 태그를 키-값 페어로 추가합니다. 예를 들어 키-값 페어가 **Environment** 및 **Test**인 태그를 정책에 추가합니다.

      태그 사용에 대한 자세한 내용은 *IAM 사용 설명서*의 [AWS Identity and Access Management 리소스 태그를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html).

1. **정책 생성**을 선택합니다.

**대상 버킷에 쓸 수 있는 IAM 역할을 생성하려면 다음을 수행합니다.**

1. IAM 콘솔의 탐색 창에서 **역할**을 선택한 후 **역할 생성**을 선택합니다.

1. **신뢰할 수 있는 엔터티 선택** 페이지에서 다음을 수행합니다.

   1. **신뢰할 수 있는 엔터티 유형**에서 **AWS 서비스**를 선택합니다.

   1. **서비스 또는 사용 사례**에서 **S3**를 선택합니다.

   1. **사용 사례**에서 **S3**를 선택합니다.

1. **다음**을 선택합니다.

1. **권한 추가** 페이지에서 다음을 수행합니다.

   1. **권한 정책** 검색 상자에 이 자습서를 위해 이전에 생성한 정책의 이름을 입력합니다. 예: **mkc-tutorial-policy**. 그런 다음 정책 이름 왼쪽에서 확인란을 선택합니다.

   1. (선택 사항) [권한 경계](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)를 선택합니다. 이는 서비스 역할에서 사용 가능한 고급 기능이며 서비스에 연결된 역할은 아닙니다. 권한 경계 설정에 대한 자세한 내용은 *IAM 사용 설명서*의 [역할 생성 및 정책 연결(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions_create-policies.html)을 참조하세요.

1. **다음**을 선택합니다.

1. **이름, 검토 및 생성** 페이지에서 다음을 수행합니다.

   1. **역할 이름**에 설명이 포함된 이름을 입력합니다(예: **mkc-tutorial-role**).
**중요**  
역할 이름을 지정할 때는 다음 사항에 유의하세요.  
역할 이름은 내에서 고유해야 하며 대/소문자를 구분할 AWS 계정수 없습니다.  
예를 들어, 이름이 **PRODROLE**과 **prodrole**, 두 가지로 지정된 역할을 만들지 마세요. 역할 이름이 정책 또는 ARN의 일부로 사용되는 경우 역할 이름은 대소문자를 구분합니다. 그러나 로그인 프로세스와 같이 콘솔에서 역할 이름이 고객에게 표시되는 경우에는 역할 이름이 대소문자를 구분하지 않습니다.
다른 엔터티가 역할을 참조할 수 있기 때문에 역할이 생성된 후에는 역할 이름을 편집할 수 없습니다.

   1. (선택 사항) **설명**에 역할에 대한 설명을 입력합니다.

   1. (선택 사항) 역할에 대한 사용 사례와 권한을 편집하려면 **1단계: 신뢰할 수 있는 엔터티 선택** 또는 **2단계: 권한 추가** 섹션에서 **편집**을 선택합니다.

   1. (선택 사항) 역할을 식별, 구성 또는 검색하는 데 도움이 되도록 **새 태그 추가**를 선택하여 태그를 키-값 페어로 추가합니다. 예를 들어 **ProductManager** 및 **John**의 키-값 페어를 사용하여 역할에 태그를 추가합니다.

      태그 사용에 대한 자세한 내용은 *IAM 사용 설명서*의 [AWS Identity and Access Management 리소스 태그를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html).

1. 역할을 검토한 다음 **역할 생성**을 선택합니다.

**MSK Connect가 역할을 수행하도록 허용하려면 다음을 수행합니다.**

1. IAM 콘솔의 왼쪽 창에 있는 **액세스 관리**에서 **역할**을 선택합니다.

1. `mkc-tutorial-role`을 찾아 선택합니다.

1. 역할의 **요약**에서 **신뢰 관계** 탭을 선택합니다.

1. **신뢰 관계 편집**을 선택합니다.

1. 기존 신뢰 정책을 다음 JSON으로 변경합니다.

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

****  

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

------

1. **신뢰 정책 업데이트**를 선택합니다.

**클러스터의 VPC에서 Amazon S3로 Amazon VPC 엔드포인트를 생성하려면 다음을 수행합니다.**

1. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)에서 Amazon VPC 콘솔을 엽니다.

1. 왼쪽 창에서 **엔드포인트**를 선택합니다.

1. **엔드포인트 생성**을 선택합니다.

1. **서비스 이름**에서 **com.amazonaws.us-east-1.s3** 서비스 및 **게이트웨이** 유형을 선택합니다.

1. 클러스터의 VPC를 선택한 다음 클러스터의 서브넷과 연결된 라우팅 테이블 왼쪽에 있는 상자를 선택합니다.

1. **엔드포인트 생성**을 선택합니다.

**다음 단계**

[사용자 지정 플러그인 생성](mkc-create-plugin.md)

# 사용자 지정 플러그인 생성
<a name="mkc-create-plugin"></a>

플러그인에는 커넥터의 로직을 정의하는 코드가 포함되어 있습니다. 이 단계에서는 렌즈 Amazon S3 싱크 커넥터용 코드가 포함된 사용자 지정 플러그인을 생성합니다. 이후 단계에서 MSK 커넥터를 생성할 때 해당 코드가 이 사용자 지정 플러그인에 있도록 지정합니다. 동일한 플러그인을 사용하여 서로 다른 구성으로 여러 개의 MSK 커넥터를 생성할 수 있습니다.

**사용자 지정 플러그인을 생성하려면 다음을 수행합니다.**

1. [S3 커넥터](https://www.confluent.io/hub/confluentinc/kafka-connect-s3)를 다운로드합니다.

1. 액세스 권한이 있는 S3 버킷에 ZIP 파일을 업로드합니다. Amazon S3에 파일을 업로드하는 방법에 대한 자세한 내용은 Amazon S3 사용 설명서의 [객체 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)를 참조하세요.

1. [https://console.aws.amazon.com/msk/](https://console.aws.amazon.com/msk/)에서 Amazon MSK 콘솔을 엽니다.

1. 왼쪽 창에서 **MSK Connect**를 확장한 다음 **사용자 지정 플러그인**을 선택합니다.

1. **사용자 지정 플러그인 생성**을 선택합니다.

1. **S3 찾아보기(Browse S3)**를 선택합니다.

1. 버킷 목록에서 ZIP 파일을 업로드한 버킷을 찾아 해당 버킷을 선택합니다.

1. 버킷의 개체 목록에서 ZIP 파일 왼쪽에 있는 라디오 버튼을 선택한 다음 **선택**이라는 레이블이 지정된 버튼을 선택합니다.

1. 사용자 지정 플러그인 이름에 `mkc-tutorial-plugin`을 입력한 다음 **사용자 지정 플러그인 생성**을 선택합니다.

사용자 지정 플러그인 생성을 완료하는 데 AWS 몇 분 정도 걸릴 수 있습니다. 생성 프로세스가 완료되면 브라우저 창 상단의 배너에 다음 메시지가 표시됩니다.

```
Custom plugin mkc-tutorial-plugin was successfully created
The custom plugin was created. You can now create a connector using this custom plugin.
```

**다음 단계**

[클라이언트 머신 및 Apache Kafka 주제 생성](mkc-create-topic.md)

# 클라이언트 머신 및 Apache Kafka 주제 생성
<a name="mkc-create-topic"></a>

이 단계에서는 Apache Kafka 클라이언트 인스턴스로 사용할 Amazon EC2 인스턴스를 생성합니다. 그런 다음 해당 인스턴스를 사용하여 클러스터에 주제를 생성합니다.

**클라이언트 머신을 만들려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. **인스턴스 시작**을 선택합니다.

1. 클라이언트 머신의 **이름**을 입력합니다(예: **mkc-tutorial-client**).

1. **Amazon Linux 2 AMI(HVM) - 커널 5.10, SSD 볼륨 유형**이 **Amazon Machine Image(AMI) 유형**으로 선택된 상태로 둡니다.

1. **t2.xlarge** 인스턴스 유형을 선택합니다.

1. **키 페어(로그인)**에서 **키 페어 생성**을 선택합니다. **키 페어 이름**에 **mkc-tutorial-key-pair**를 입력한 다음 **키 페어 다운로드**를 선택합니다. 또는 기존 키 페어를 사용할 수 있습니다.

1. **인스턴스 시작**을 선택합니다.

1. **인스턴스 보기**를 선택합니다. 그런 다음 **보안 그룹** 열에서 새 인스턴스와 연결된 보안 그룹을 선택합니다. 보안 그룹의 ID를 복사하여 나중에 사용할 수 있도록 저장합니다.

**새로 생성된 클라이언트가 클러스터에 데이터를 전송할 수 있도록 허용하려면 다음을 수행합니다.**

1. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)에서 Amazon VPC 콘솔을 엽니다.

1. 왼쪽 창의 **보안**에서 **보안 그룹**을 선택합니다. **보안 그룹 ID** 열에서 클러스터의 보안 그룹을 찾습니다. [MSK Connect에 필요한 리소스 설정](mkc-tutorial-setup.md)에 클러스터를 생성할 때 이 보안 그룹의 ID를 저장했습니다. 행 왼쪽에 있는 상자를 선택하여 해당 보안 그룹을 선택합니다. 다른 보안 그룹이 동시에 선택되지 않았는지 확인합니다.

1. 화면 하단에서 **인바운드 규칙** 탭을 선택합니다.

1. **인바운드 규칙 편집**을 선택합니다.

1. 화면 왼쪽 하단에서 **규칙 추가**를 선택합니다.

1. 새 규칙의 **유형** 열에서 **모든 트래픽**을 선택합니다. **소스** 열의 오른쪽 필드에 클라이언트 컴퓨터의 보안 그룹 ID를 입력합니다. 클라이언트 머신을 생성한 후 저장한 보안 그룹 ID입니다.

1. **규칙 저장**을 선택합니다. 이제 MSK 클러스터가 이전 절차에서 생성한 클라이언트의 모든 트래픽을 허용합니다.

**주제를 생성하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 인스턴스 표에서 `mkc-tutorial-client`를 선택합니다.

1. 화면 상단에서 **연결**을 선택한 다음 지침에 따라 인스턴스에 연결합니다.

1. 다음 명령을 실행하여 클라이언트 인스턴스에 Java를 설치합니다.

   ```
   sudo yum install java-1.8.0
   ```

1. Apache Kafka를 다운로드하려면 다음 명령을 실행합니다.

   ```
   wget https://archive.apache.org/dist/kafka/2.2.1/kafka_2.12-2.2.1.tgz
   ```
**참고**  
이 명령에 사용된 사이트 이외의 미러 사이트를 사용하려면 [Apache](https://www.apache.org/dyn/closer.cgi?path=/kafka/1.1.1/kafka_2.11-1.1.1.tgz) 웹사이트에서 다른 것을 선택할 수 있습니다.

1. 이전 단계에 TAR 파일을 다운로드한 디렉토리에서 다음 명령을 실행합니다.

   ```
   tar -xzf kafka_2.12-2.2.1.tgz
   ```

1. **kafka\$12.12-2.2.1** 디렉터리로 이동하십시오.

1. [https://console.aws.amazon.com/msk/home?region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/)에서 Amazon MSK 콘솔을 엽니다.

1. 왼쪽 창에서 **클러스터**를 선택한 다음 이름 `mkc-tutorial-cluster`를 선택합니다.

1. **클라이언트 정보 보기**를 선택합니다.

1. **일반 텍스트** 연결 문자열을 복사합니다.

1. **완료**를 선택합니다.

1. 클라이언트 인스턴스(`mkc-tutorial-client`)에서 다음 명령을 실행하여 *bootstrapServerString*을 클러스터의 클라이언트 정보를 볼 때 저장한 값으로 변경합니다.

   ```
   <path-to-your-kafka-installation>/bin/kafka-topics.sh --create --bootstrap-server bootstrapServerString --replication-factor 2 --partitions 1 --topic mkc-tutorial-topic
   ```

   명령이 성공하면 `Created topic mkc-tutorial-topic.` 메시지가 표시됩니다.

**다음 단계**

[커넥터 생성](mkc-create-connector.md)

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

이 절차에서는 AWS Management Console을 사용하여 커넥터를 생성하는 방법을 설명합니다.

**커넥터를 생성하려면 다음을 수행합니다.**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/msk/home?region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/) Amazon MSK 콘솔을 엽니다.

1. 왼쪽 창에서 **MSK Connect**를 확장하고 **커넥터**를 선택합니다.

1. **커넥터 생성**을 선택합니다.

1. 플러그인 목록에서 `mkc-tutorial-plugin`을 선택하고 **다음**을 선택합니다.

1. 커넥터 이름에 `mkc-tutorial-connector`를 입력합니다.

1. 클러스터 목록에서 `mkc-tutorial-cluster`를 선택합니다.

1. **커넥터 네트워크 설정** 섹션에서 네트워크 유형에 대해 다음 중 하나를 선택합니다.
   + **IPv4**(기본값) - IPv4를 통한 대상 연결 전용
   + **듀얼 스택 -** IPv4 및 IPv6를 통해 대상에 연결(서브넷에 IPv4 및 IPv6 CIDR 블록이 연결된 경우에만 사용 가능)

1. 다음 구성을 복사하여 커넥터 구성 필드에 붙여넣습니다.

   리전을 커넥터를 생성하는 AWS 리전 의 코드로 바꿔야 합니다. 또한 다음 예제에서 Amazon S3 버킷 이름 *<amzn-s3-demo-bucket-my-tutorial>*을 사용자의 버킷 이름으로 바꿉니다.

   ```
   connector.class=io.confluent.connect.s3.S3SinkConnector
   s3.region=us-east-1
   format.class=io.confluent.connect.s3.format.json.JsonFormat
   flush.size=1
   schema.compatibility=NONE
   tasks.max=2
   topics=mkc-tutorial-topic
   partitioner.class=io.confluent.connect.storage.partitioner.DefaultPartitioner
   storage.class=io.confluent.connect.s3.storage.S3Storage
   s3.bucket.name=<amzn-s3-demo-bucket-my-tutorial>
   topics.dir=tutorial
   ```

1. **액세스 권한**에서 `mkc-tutorial-role`을 선택합니다.

1. **다음**을 선택합니다. **보안** 페이지에서 **다음**을 다시 선택합니다.

1. **로그** 페이지에서 **다음**을 선택합니다.

1. **검토 및 생성** 페이지에서 커넥터 구성을 검토하고 **커넥터 생성을** 선택합니다.

**다음 단계**

[MSK 클러스터로 데이터 전송](mkc-send-data.md)

# MSK 클러스터로 데이터 전송
<a name="mkc-send-data"></a>

이 단계에서는 이전에 생성한 Apache Kafka 주제로 데이터를 전송한 다음 대상 S3 버킷에서 동일한 데이터를 찾습니다.

**MSK 클러스터로 데이터를 전송하려면 다음을 수행합니다.**

1. 클라이언트 인스턴스에 설치된 Apache Kafka의 `bin` 폴더에 다음 내용으로 `client.properties`라는 이름의 텍스트 파일을 생성합니다.

   ```
   security.protocol=SASL_SSL
   sasl.mechanism=AWS_MSK_IAM
   ```

1. 다음 명령을 실행하여 콘솔 생산자를 생성합니다. *BootstrapBrokerString*을 이전 명령을 실행할 때 가져온 값으로 변경합니다.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list BootstrapBrokerString --producer.config client.properties --topic mkc-tutorial-topic
   ```

1. 원하는 메시지를 입력하고 **Enter**키를 누릅니다. 이 단계를 두 번 또는 세 번 반복하십시오. 한 줄을 입력하고 **Enter**를 누를 때마다, 그 줄은 Apache Kafka 클러스터에 별도의 메시지로 전송됩니다.

1. 대상 Amazon S3 버킷에서 이전 단계에서 보낸 메시지를 찾습니다.