

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

# MSK Serverless 클러스터 사용
<a name="serverless-getting-started"></a>

이 자습서에서는 MSK 서버리스 클러스터를 생성하고, 클러스터에 액세스할 수 있는 클라이언트 시스템을 생성하고, 클라이언트를 사용하여 클러스터에 주제를 생성하고, 해당 주제에 데이터를 쓰는 방법의 예제를 보여줍니다. 이 예제는 서버리스 클러스터를 생성할 때 선택할 수 있는 모든 옵션을 대표하지는 않습니다. 이 연습의 다른 부분에서는 간단한 설명을 위해 기본 옵션을 선택합니다. 그렇다고 해서 서버리스 클러스터를 설정하는 데 이 옵션이 유일한 옵션이라는 의미는 아닙니다. AWS CLI 또는 Amazon MSK API를 사용할 수도 있습니다. 자세한 내용은 [Amazon MSK API 참조 2.0](https://docs.aws.amazon.com/MSK/2.0/APIReference/what-is-msk.html)을 참조하세요.

**Topics**
+ [MSK Serverless 클러스터 생성](create-serverless-cluster.md)
+ [MSK Serverless 클러스터의 주제에 대한 IAM 역할 생성](create-iam-role.md)
+ [MSK Serverless 클러스터에 액세스할 클라이언트 머신 생성](create-serverless-cluster-client.md)
+ [Apache Kafka 주제 생성](msk-serverless-create-topic.md)
+ [MSK Serverless에서 데이터 생성 및 소비](msk-serverless-produce-consume.md)
+ [MSK Serverless를 위해 생성한 리소스 삭제](delete-resources.md)

# MSK Serverless 클러스터 생성
<a name="create-serverless-cluster"></a>

이 단계에서는 두 가지 태스크를 수행합니다. 먼저 기본 설정으로 MSK 서버리스 클러스터를 생성합니다. 둘째, 클러스터에 대한 정보를 수집합니다. 이 정보는 이후 단계에서 클러스터에 데이터를 보낼 수 있는 클라이언트를 만들 때 필요한 정보입니다.

**서버리스 클러스터를 만들려면 다음을 수행합니다.**

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

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

1. **생성 방법**에서는 **빠른 생성** 옵션을 선택한 상태로 둡니다. **빠른 생성** 옵션을 사용하면 기본 설정으로 서버리스 클러스터를 생성할 수 있습니다.

1. **클러스터 이름**에 설명이 포함된 이름을 입력합니다(예: **msk-serverless-tutorial-cluster**).

1. **일반 클러스터 속성**의 경우 **클러스터 유형**으로 **서버리스**를 선택합니다. 나머지 **일반 클러스터** 속성에는 기본값을 사용합니다.

1. **모든 클러스터 설정** 아래의 표를 참고하세요. 이 표에는 네트워킹 및 가용성과 같은 중요한 설정의 기본값이 나열되어 있으며 클러스터 생성 후 각 설정을 변경할 수 있는지 여부가 표시되어 있습니다. 클러스터를 생성하기 전에 설정을 변경하려면 **생성 방법**에서 **사용자 지정 생성** 옵션을 선택해야 합니다.
**참고**  
MSK 서버리스 클러스터를 사용하면 최대 5개의 서로 다른 VPC의 클라이언트를 연결할 수 있습니다. 중단 시 클라이언트 애플리케이션이 다른 가용 영역으로 전환할 수 있도록 하려면 각 VPC에 서브넷을 2개 이상 지정해야 합니다.

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

**클러스터에 대한 정보를 수집하려면 다음을 수행합니다.**

1. **클러스터 요약** 섹션에서 **클라이언트 정보 보기**를 선택합니다. 이 버튼은 Amazon MSK가 클러스터 생성을 완료할 때까지 회색으로 표시된 상태로 유지됩니다. 버튼이 활성화되어 사용할 수 있을 때까지 몇 분 정도 기다려야 할 수도 있습니다.

1. **엔드포인트** 레이블 아래의 문자열을 복사합니다. 이것은 부트스트랩 서버 문자열입니다.

1. **속성** 탭을 선택합니다.

1. **네트워킹 설정** 섹션에서 서브넷의 ID와 보안 그룹을 복사하고 저장합니다. 이 정보는 나중에 클라이언트 시스템을 생성하는 데 필요하기 때문입니다.

1. 서브넷 중 하나를 선택합니다. 그러면 Amazon VPC 콘솔이 열립니다. 서브넷과 연결된 Amazon VPC의 ID를 찾습니다. 나중에 사용할 수 있도록 이 Amazon VPC ID를 저장합니다.

**다음 단계**

[MSK Serverless 클러스터의 주제에 대한 IAM 역할 생성](create-iam-role.md)

# MSK Serverless 클러스터의 주제에 대한 IAM 역할 생성
<a name="create-iam-role"></a>

이 단계에서는 두 가지 태스크를 수행합니다. 첫 번째 태스크는 클러스터에서 주제를 생성하고 해당 주제에 데이터를 전송할 수 있는 액세스 권한을 부여하는 IAM 정책을 생성하는 것입니다. 두 번째 태스크는 IAM 역할을 생성하고 해당 정책을 여기에 연결하는 것입니다. 이후 단계에서 이 역할을 맡는 클라이언트 머신을 생성하고, 이를 사용하여 클러스터에 주제를 생성하고, 해당 주제로 데이터를 전송합니다.

**주제를 생성하고 주제에 글을 쓸 수 있는 IAM 정책을 만들려면 다음을 수행합니다.**

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

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

1. **정책 생성**을 선택하세요.

1. **JSON** 탭을 선택한 다음 편집기 창의 JSON을 다음 JSON으로 변경합니다.

   다음 예제에서 다음을 변경합니다.
   + 클러스터를 생성한 AWS 리전 의 코드가 포함된 *region*.
   + 계정 ID 예: *123456789012*, AWS 계정 ID 포함.
   + *msk-serverless-tutorial-cluster*/*c07c74ea-5146-4a03-add1-9baa787a5b14-s3* 및 *msk-serverless-tutorial-cluster*를 사용자의 서버리스 클러스터 ID 및 토픽 이름으로 변경합니다.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "kafka-cluster:Connect",
                   "kafka-cluster:DescribeCluster"
               ],
               "Resource": [
                   "arn:aws:kafka:us-east-1:123456789012:cluster/msk-serverless-tutorial-cluster/c07c74ea-5146-4a03-add1-9baa787a5b14-s3"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kafka-cluster:CreateTopic",
                   "kafka-cluster:WriteData",
                   "kafka-cluster:DescribeTopic"
               ],
               "Resource": [
               "arn:aws:kafka:us-east-1:123456789012:topic/msk-serverless-tutorial-cluster/*"
               ]
           }
       ]
   }
   ```

------

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

1. **다음: 태그**를 선택합니다.

1. **다음: 검토**를 선택합니다.

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

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

**IAM 역할을 생성하여 여기에 정책을 연결하려면 다음을 수행합니다.**

1. 탐색 창에서 **역할**을 선택합니다.

1. **역할 생성**을 선택합니다.

1. **일반 사용 사례**에서 **EC2**를 선택한 다음 **다음: 권한**을 선택합니다.

1. 검색 상자에 이 자습서를 위해 이전에 생성한 정책의 이름을 입력합니다. 그런 다음 정책의 왼쪽에 있는 확인란을 선택합니다.

1. **다음: 태그**를 선택합니다.

1. **다음: 검토**를 선택합니다.

1. 역할 이름에 설명이 포함된 이름을 입력합니다(예: **msk-serverless-tutorial-role**).

1. **역할 생성**을 선택합니다.

**다음 단계**

[MSK Serverless 클러스터에 액세스할 클라이언트 머신 생성](create-serverless-cluster-client.md)

# MSK Serverless 클러스터에 액세스할 클라이언트 머신 생성
<a name="create-serverless-cluster-client"></a>

이 단계에서는 두 가지 태스크를 수행합니다. 첫 번째 태스크는 Apache Kafka 클라이언트 머신으로 사용할 Amazon EC2 인스턴스를 생성하는 것입니다. 두 번째 작업은 머신에 Java 및 Apache Kafka 도구를 설치하는 것입니다.

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

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

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

1. 클라이언트 머신에 대한 설명이 포함된 **이름**(예: **msk-serverless-tutorial-client**)을 입력합니다.

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

1. **t2.micro** 인스턴스 유형을 선택된 상태로 둡니다.

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

1. **네트워크 설정**에서 **편집**을 선택합니다.

1. **VPC**에서 서버리스 클러스터의 Virtual Private Cloud(VPC) ID를 입력합니다. 클러스터를 생성한 후 ID를 저장한 Amazon VPC 서비스를 기반으로 하는 VPC입니다.

1. **서브넷**에서 클러스터를 생성한 후 ID를 저장한 서브넷을 선택합니다.

1. **방화벽(보안 그룹)**의 경우 클러스터와 연결된 보안 그룹을 선택합니다. 이 값은 해당 보안 그룹에 보안 그룹에서 자신으로 트래픽을 허용하는 인바운드 규칙이 있는 경우에 작동합니다. 이러한 규칙을 사용하면 동일한 보안 그룹의 구성원이 서로 통신할 수 있습니다. 자세한 내용은 Amazon VPC 개발자 안내서의 [보안 그룹 규칙](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules)을 참조하세요.

1. **고급 세부 정보** 섹션을 확장하고 [MSK Serverless 클러스터의 주제에 대한 IAM 역할 생성](create-iam-role.md)에서 생성한 IAM 역할을 선택합니다.

1. **시작**을 선택합니다.

1. 왼쪽 탐색 창에서 **인스턴스**를 선택합니다. 그런 다음 새로 생성한 Amazon EC2 인스턴스를 나타내는 행에서 확인란을 선택합니다. 이 시점부터 이 인스턴스를 *클라이언트 머신*이라고 부릅니다.

1. **연결**을 선택하고 지침에 따라 클라이언트 머신에 연결합니다.

**클라이언트 머신에 Apache Kafka 클라이언트 도구를 설정하려면 다음을 수행합니다.**

1. Java를 설치하려면 클라이언트 머신에서 다음 명령을 실행합니다.

   ```
   sudo yum -y install java-11
   ```

1. 주제를 생성하고 데이터를 전송하는 데 필요한 Apache Kafka 도구를 가져오려면 다음 명령을 실행합니다.

   ```
   wget https://archive.apache.org/dist/kafka/2.8.1/kafka_2.12-2.8.1.tgz
   ```

   ```
   tar -xzf kafka_2.12-2.8.1.tgz
   ```
**참고**  
Kafka 아카이브를 추출한 후 `bin` 디렉터리의 스크립트에 적합한 실행 권한이 있는지 확인합니다. 다음 명령으로 실행하세요.  

   ```
   chmod +x kafka_2.12-2.8.1/bin/*.sh
   ```

1. `kafka_2.12-2.8.1/libs` 디렉터리로 이동하고 다음 명령을 실행하여 Amazon MSK IAM JAR 파일을 다운로드합니다. Amazon MSK IAM JAR을 사용하면 클라이언트 머신이 클러스터에 액세스할 수 있습니다.

   ```
   wget https://github.com/aws/aws-msk-iam-auth/releases/download/v2.3.0/aws-msk-iam-auth-2.3.0-all.jar
   ```

   이 명령을 사용하여 Amazon MSK IAM JAR 파일의 [다른 버전 또는 최신 버전을 다운로드](https://github.com/aws/aws-msk-iam-auth/releases)할 수도 있습니다.

1. `kafka_2.12-2.8.1/bin` 디렉터리로 이동합니다. 다음 속성 설정을 복사하여 새 파일에 붙여넣습니다. 파일 이름을 `client.properties`로 지정하고 저장합니다.

   ```
   security.protocol=SASL_SSL
   sasl.mechanism=AWS_MSK_IAM
   sasl.jaas.config=software.amazon.msk.auth.iam.IAMLoginModule required;
   sasl.client.callback.handler.class=software.amazon.msk.auth.iam.IAMClientCallbackHandler
   ```

**다음 단계**

[Apache Kafka 주제 생성](msk-serverless-create-topic.md)

# Apache Kafka 주제 생성
<a name="msk-serverless-create-topic"></a>

이 단계에서는 이전에 생성한 클라이언트 머신을 사용하여 서버리스 클러스터에 주제를 생성합니다.

**Topics**
+ [토픽 생성을 위한 환경 설정](#msk-serverless-create-topic-prerequisites)
+ [토픽 생성 및 해당 위치에 데이터 쓰기](#msk-serverless-create-topic-procedure)

## 토픽 생성을 위한 환경 설정
<a name="msk-serverless-create-topic-prerequisites"></a>
+ 주제를 생성하기 전에 AWS MSK IAM JAR 파일을 Kafka 설치의 `libs/` 디렉터리에 다운로드했는지 확인합니다. 아직 수행하지 않은 경우 Kafka의 `libs/` 디렉터리에서 다음 명령을 실행합니다.

  ```
  wget https://github.com/aws/aws-msk-iam-auth/releases/download/v2.3.0/aws-msk-iam-auth-2.3.0-all.jar
  ```

  이 JAR 파일은 MSK 서버리스 클러스터를 사용한 IAM 인증에 필요합니다.
+ Kafka 명령을 실행할 때에 AWS MSK IAM JAR 파일이 `classpath` 포함되어 있는지 확인해야 할 수 있습니다. 이렇게 하려면 다음 중 한 가지를 수행합니다.
  + 다음 예제와 같이 Kafka 라이브러리가 포함되도록 `CLASSPATH` 환경 변수를 설정합니다.

    ```
    export CLASSPATH=<path-to-your-kafka-installation>/libs/*:<path-to-your-kafka-installation>/libs/aws-msk-iam-auth-2.3.0-all.jar
    ```
  + 다음 예제와 같이 명시적 `classpath`와 함께 전체 Java 명령을 사용하여 Kafka 명령을 실행합니다.

    ```
    java -cp "<path-to-your-kafka-installation>/libs/*:<path-to-your-kafka-installation>/libs/aws-msk-iam-auth-2.3.0-all.jar" org.apache.kafka.tools.TopicCommand --bootstrap-server $BS --command-config client.properties --create --topic msk-serverless-tutorial --partitions 6
    ```

## 토픽 생성 및 해당 위치에 데이터 쓰기
<a name="msk-serverless-create-topic-procedure"></a>

1. 다음 `export` 명령에서 *my-endpoint*를 클러스터를 생성한 후 저장한 부트스트랩 서버 문자열로 변경합니다. 그런 다음 클라이언트 머신의 `kafka_2.12-2.8.1/bin` 디렉터리로 이동하여 `export` 명령을 실행합니다.

   ```
   export BS=my-endpoint
   ```

1. 다음 명령을 실행하여 `msk-serverless-tutorial`이라는 주제를 생성합니다.

   ```
   <path-to-your-kafka-installation>/bin/kafka-topics.sh --bootstrap-server $BS --command-config client.properties --create --topic msk-serverless-tutorial --partitions 6
   ```

**다음 단계**

[MSK Serverless에서 데이터 생성 및 소비](msk-serverless-produce-consume.md)

# MSK Serverless에서 데이터 생성 및 소비
<a name="msk-serverless-produce-consume"></a>

이 단계에서는 이전 단계에서 생성한 주제를 사용하여 데이터를 생성하고 소비합니다.

**메시지를 생산하고 소비하려면**

1. 다음 명령을 실행하여 콘솔 생산자를 생성합니다.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-producer.sh --broker-list $BS --producer.config client.properties --topic msk-serverless-tutorial
   ```

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

1. 클라이언트 머신에 대한 연결을 열어 둔 다음, 새 창에서 해당 머신에 대한 별도의 두 번째 연결을 엽니다.

1. 클라이언트 머신에 대한 두 번째 연결을 사용하여 다음 명령으로 콘솔 소비자를 생성합니다. *my-endpoint*를 클러스터를 생성한 후 저장한 부트스트랩 서버 문자열로 변경합니다.

   ```
   <path-to-your-kafka-installation>/bin/kafka-console-consumer.sh --bootstrap-server my-endpoint --consumer.config client.properties --topic msk-serverless-tutorial --from-beginning
   ```

   콘솔 생산자 명령을 사용할 때 앞서 입력한 메시지가 표시되기 시작합니다.

1. 생산자 창에 메시지를 더 입력하고 소비자 창에 메시지가 표시되는지 확인합니다.

해당 명령을 실행하는 동안 `classpath` 문제가 발생하는 경우 올바른 디렉터리에서 실행 중인지 확인합니다. 또한 AWS MSK IAM JAR이 `libs` 디렉터리에 있는지 확인합니다. 또는 다음 예제와 같이 명시적 `classpath`와 함께 전체 Java 명령을 사용하여 Kafka 명령을 실행할 수 있습니다.

```
java -cp "kafka_2.12-2.8.1/libs/*:kafka_2.12-2.8.1/libs/aws-msk-iam-auth-2.3.0-all.jar" org.apache.kafka.tools.ConsoleProducer —broker-list $BS —producer.config client.properties —topic msk-serverless-tutorial
```

**다음 단계**

[MSK Serverless를 위해 생성한 리소스 삭제](delete-resources.md)

# MSK Serverless를 위해 생성한 리소스 삭제
<a name="delete-resources"></a>

이 단계에서는 자습서에서 생성한 리소스를 삭제합니다.

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

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

1. 클러스터 목록에서 이 자습서를 위해 생성한 클러스터를 선택합니다.

1. **작업**에서 **클러스터 삭제**를 선택합니다.

1. 상자에 `delete`를 입력한 다음 **삭제**를 선택합니다.

**클라이언트 머신을 중지하려면 다음을 수행합니다.**

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

1. Amazon EC2 인스턴스 목록에서 이 자습서를 위해 생성한 클라이언트 머신을 선택합니다.

1. **인스턴스 상태**를 선택한 다음 **인스턴스 종료**를 선택합니다.

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

**IAM 정책 및 역할을 삭제하려면 다음을 수행합니다.**

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

1. 탐색 창에서 **역할**을 선택합니다.

1. 검색 상자에 이 자습서를 위해 생성한 IAM 역할의 이름을 입력합니다.

1.  역할을 선택합니다. 그런 다음 **역할 삭제**를 선택하고 삭제를 확인합니다.

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

1. 검색 상자에 이 자습서를 위해 생성한 정책의 이름을 입력합니다.

1. 정책을 선택하면 해당 요약 페이지가 열립니다. 정책의 **요약** 페이지에서 **정책 삭제**를 선택합니다.

1. **삭제**를 선택합니다.