

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

# MSK Serverless란 무엇인가요?
<a name="serverless"></a>

**참고**  
MSK 서버리스는 미국 동부(오하이오), 미국 동부(버지니아 북부), 미국 서부(오레곤), 캐나다(중부), 아시아 태평양(뭄바이), 아시아 태평양(싱가포르), 아시아 태평양(시드니), 아시아 태평양(도쿄), 아시아 태평양(서울), 유럽(프랑크푸르트), 유럽(스톡홀름), 유럽(아일랜드), 유럽(파리), 유럽(런던) 리전에서 사용할 수 있습니다.

MSK 서버리스는 클러스터 용량을 관리하고 규모를 조정할 필요 없이 Apache Kafka를 실행할 수 있도록 해주는 Amazon MSK의 클러스터 유형입니다. 주제의 파티션을 관리하면서 용량을 자동으로 프로비저닝하고 확장하므로 클러스터의 크기를 조정하거나 확장할 필요 없이 데이터를 스트리밍할 수 있습니다. MSK 서버리스는 처리량 기반 요금 모델을 제공하므로 사용한 만큼만 비용을 지불하면 됩니다. 애플리케이션에 자동으로 확장되고 축소되는 온디맨드 스트리밍 용량이 필요한 경우 서버리스 클러스터 사용을 고려하세요.

MSK 서버리스는 Apache Kafka와 완벽하게 호환되므로 호환되는 모든 클라이언트 애플리케이션을 사용하여 데이터를 생성하고 소비할 수 있습니다. 또한 다음 서비스와도 통합됩니다.
+ AWS PrivateLink 프라이빗 연결을 제공하기 위해
+ AWS Identity and Access Management Java 및 비 Java 언어를 사용한 인증 및 권한 부여를 위한 (IAM) IAM용 클라이언트 구성에 대한 지침은 [IAM 액세스 제어를 위한 클라이언트 구성](configure-clients-for-iam-access-control.md) 섹션을 참조하세요.
+ AWS Glue 스키마 관리를 위한 스키마 레지스트리
+ Apache Flink 기반 스트림 처리를 위한 Amazon Managed Service for Apache Flink
+  AWS Lambda 이벤트 처리를 위한

**참고**  
MSK 서버리스에는 모든 클러스터에 대한 IAM 액세스 제어가 필요합니다. Apache Kafka 액세스 제어 목록(ACL)은 지원되지 않습니다. 자세한 내용은 [IAM 액세스 제어](iam-access-control.md) 단원을 참조하십시오.  
MSK 서버리스에 적용되는 서비스 할당량에 대한 자세한 내용은 [MSK 서버 규모 조정](limits.md#serverless-quota) 섹션을 참조하세요.

서버리스 클러스터를 시작하는 데 도움을 주고 서버리스 클러스터의 구성 및 모니터링 옵션에 대해 자세히 알아보려면 다음을 참조하세요.

**Topics**
+ [MSK Serverless 클러스터 사용](serverless-getting-started.md)
+ [MSK Serverless 클러스터에 대한 구성 속성](serverless-config.md)
+ [듀얼 스택 네트워크 유형 구성](serverless-config-dual-stack.md)
+ [MSK Serverless 클러스터 모니터링](serverless-monitoring.md)

# 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. **삭제**를 선택합니다.

# MSK Serverless 클러스터에 대한 구성 속성
<a name="serverless-config"></a>

Amazon MSK는 서버리스 클러스터에 대한 브로커 구성 속성을 설정합니다. 이러한 브로커 구성 속성 설정은 변경할 수 없지만 그러나 다음 주제 수준의 구성 속성을 설정하거나 수정할 수 있습니다. 다른 모든 주제 수준의 구성 속성은 구성할 수 없습니다.


****  

| 구성 속성 | 기본값 | 편집 가능 | 최대 허용 값 | 
| --- | --- | --- | --- | 
| [cleanup.policy](https://kafka.apache.org/documentation/#topicconfigs_cleanup.policy) | Delete | 예, 그러나 주제를 생성할 때만 가능합니다. |  | 
|  [compression.type](https://kafka.apache.org/documentation/#topicconfigs_compression.type)  | 생산자 | 예 |  | 
|  [max.message.bytes](https://kafka.apache.org/documentation/#topicconfigs_max.message.bytes)  | 1048588 | 예 | 8388608(8MiB) | 
|  [message.timestamp.difference.max.ms](https://kafka.apache.org/documentation/#topicconfigs_message.timestamp.difference.max.ms)  | long.max | 예 |  | 
|  [message.timestamp.type](https://kafka.apache.org/documentation/#topicconfigs_message.timestamp.type)  | CreateTime | 예 |  | 
|  [retention.bytes](https://kafka.apache.org/documentation/#topicconfigs_retention.bytes)  | 250GiB | 예 | 무제한, 무제한 보존을 위해 -1로 설정 | 
|  [retention.ms](https://kafka.apache.org/documentation/#topicconfigs_retention.ms)  | 7일 | 예 | 무제한, 무제한 보존을 위해 -1로 설정 | 

이러한 주제 수준의 구성 속성을 설정하거나 수정하기 위해 Apache Kafka 명령줄 도구를 사용할 수 있습니다. 자세한 내용과 설정 방법은 공식 Apache Kafka 설명서의 [3.2 주제 수준 구성](https://kafka.apache.org/documentation/#topicconfigs)을 참조하세요.

**참고**  
MSK Serverless의 토픽에 대한 segment.bytes 구성은 수정할 수 없습니다. 그러나 Kafka Streams 애플리케이션은 MSK Serverless에서 허용하는 것과 다른 segment.bytes 구성 값으로 내부 토픽 생성을 시도할 수 있습니다. MSK Serverless로 Kafka Streams를 구성하는 방법에 대한 자세한 내용은 [MSK Express 브로커 및 MSK Serverless를 통해 Kafka Streams 사용](use-kafka-streams-express-brokers-msk-serverless.md) 섹션을 참조하세요.

Amazon MSK Serverless에서 Apache Kafka 명령줄 도구를 사용하는 경우 [Amazon MSK Serverless 시작하기 설명서](https://docs.aws.amazon.com/msk/latest/developerguide/create-serverless-cluster-client.html)의 *클라이언트 머신에 Apache Kafka 클라이언트 도구를 설정하려면* 섹션에서 1\$14단계를 완료했는지 확인합니다. 또한 명령에 `--command-config client.properties` 파라미터를 포함해야 합니다.

예를 들어 다음 명령을 사용하여 retention.bytes 주제의 구성 속성을 수정하여 무제한 보존을 설정할 수 있습니다.

```
<path-to-your-kafka-client-installation>/bin/kafka-configs.sh —bootstrap-server <bootstrap_server_string> —command-config client.properties --entity-type topics --entity-name <topic_name> --alter --add-config retention.bytes=-1
```

이 예제에서는 *<bootstrap server string>*을 Amazon MSK Serverless 클러스터의 부트스트랩 서버 엔드포인트로 바꾸고, *<topic\$1name>*을 수정하려는 주제 이름으로 바꿉니다.

`--command-config client.properties` 파라미터는 Kafka 명령줄 도구에서 적절한 구성 설정을 사용하여 Amazon MSK Serverless 클러스터와 통신하도록 합니다.

# 듀얼 스택 네트워크 유형 구성
<a name="serverless-config-dual-stack"></a>

 Amazon MSK는 Kafka 버전 3.6.0 이상을 사용하는 기존 MSK Serverless 클러스터에 대해 추가 비용 없이 듀얼 스택 네트워크 유형을 지원합니다. 듀얼 스택 네트워킹을 사용하면 클러스터가 IPv4 및 IPv6 주소를 모두 사용할 수 있습니다. 듀얼 스택 엔드포인트는 IPv4도 지원하므로 이전 버전과의 호환성을 유지합니다. Amazon MSK는 IPv6 IPv6-only 지원을 제공합니다.

 기본적으로 클라이언트는 IPv4 네트워크 유형을 사용하여 Amazon MSK 클러스터에 연결합니다. 생성하는 모든 새 클러스터도 기본적으로 IPv4를 사용합니다. 클러스터의 네트워크 유형을 듀얼 스택으로 업데이트하려면 다음 섹션에 설명된 사전 조건을 충족했는지 확인합니다. 그런 다음 [UpdateConnectivity](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-connectivity.html#UpdateConnectivity) API를 사용하여 듀얼 스택에 대한 연결을 업데이트합니다.

**참고**  
듀얼 스택 네트워크 유형을 사용하도록 클러스터를 업데이트한 후에는 다시 IPv4 네트워크 유형으로 전환할 수 없습니다.

**Topics**
+ [듀얼 스택 네트워크 유형을 사용하기 위한 사전 조건](#msks-ipv6-prerequisites)
+ [MSK Serverless에 대한 IAM 권한](#msks-ipv6-iam-permissions)
+ [클러스터에 듀얼 스택 네트워크 유형 사용](#update-msks-network-type)
+ [듀얼 스택 네트워크 유형 사용에 대한 고려 사항](#msks-dual-stack-considerations)

## 듀얼 스택 네트워크 유형을 사용하기 위한 사전 조건
<a name="msks-ipv6-prerequisites"></a>

클러스터에 대해 듀얼 스택 네트워크 유형을 구성하기 전에 클러스터 생성 중에 제공하는 모든 서브넷이 듀얼 스택 네트워크 유형을 지원해야 합니다. 클러스터의 서브넷 하나가 듀얼 스택을 지원하지 않는 경우 클러스터의 네트워크 유형을 듀얼 스택으로 업데이트할 수 없습니다.

## MSK Serverless에 대한 IAM 권한
<a name="msks-ipv6-iam-permissions"></a>

이 경우 다음 IAM 권한이 있어야 합니다.
+  `ec2:DescribeSubnets` 
+  `ec2:ModifyVpcEndpoint` 

모든 Amazon MSK 작업을 수행하는 데 필요한 권한의 전체 목록은 관리형 정책: AmazonMSKFullAccess를 참조 AWS 하세요. [ AmazonMSKFullAccess](https://docs.aws.amazon.com/msk/latest/developerguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonMSKFullAccess)

## 클러스터에 듀얼 스택 네트워크 유형 사용
<a name="update-msks-network-type"></a>

 AWS Management Console AWS CLI또는 AWS SDK를 사용하여 MSK Serverless 클러스터의 네트워크 유형을 업데이트할 수 있습니다.

------
#### [ Using AWS Management Console ]

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 Serverless 클러스터를 선택합니다.

1. 클러스터 세부 정보 페이지에서 **속성을** 선택합니다.

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

1. **네트워크 유형**에서 **듀얼 스택**을 선택합니다.

1. **변경 사항 저장**을 선택합니다.

------
#### [ Using AWS CLI ]

[ update-connectivity](https://docs.aws.amazon.com/cli/latest/reference/kafka/update-connectivity.html) API를 사용하여 기존 MSK Serverless 클러스터의 네트워크 유형을 듀얼 스택으로 업데이트할 수 있습니다. 다음 예제에서는 ` update-connectivity` 명령을 사용하여 클러스터의 네트워크 유형을 듀얼 스택으로 설정합니다.

다음 예제에서 샘플 클러스터 ARN인 arn:aws:kafka:*us-east-1*:* 123456789012*:cluster/*myCluster* /*12345678-1234-1234-1234-123456789012 -1*을 실제 MSK 클러스터 ARN으로 바꿉니다. 현재 클러스터 버전을 가져오려면 [describe-cluster](https://docs.aws.amazon.com/cli/latest/reference/kafka/describe-cluster.html) 명령을 사용합니다.

```
aws kafka update-connectivity \
    --cluster-arn "arn:aws:kafka:us-east-1:123456789012:cluster/myCluster/12345678-1234-1234-1234-123456789012-1" \
    --current-version "KTVPDKIKX0DER" \
    --connectivity-info '{
        "networkType": "DUAL"
    }
```

------
#### [ Using AWS SDK ]

다음 예제에서는 [UpdateConnectivity](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-connectivity.html#UpdateConnectivity) API를 사용하여 클러스터의 네트워크 유형을 듀얼 스택으로 설정합니다.

다음 예제에서 샘플 클러스터 ARN인 arn:aws:kafka:*us-east-1*:*123456789012*:cluster/*myCluster*/*12345678-1234-1234-1234-123456789012-1*을 실제 MSK 클러스터 ARN으로 바꿉니다. 현재 클러스터 버전을 가져오려면 [DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster) API를 사용합니다.

```
import boto3

client = boto3.client("kafka")

response = client.update_connectivity(
    ClusterArn="arn:aws:kafka:us-east-1:123456789012:cluster/myCluster/12345678-1234-1234-1234-123456789012-1",
    CurrentVersion="KTVPDKIKX0DER",
    ConnectivityInfo={
        "NetworkType": "DUAL"
    }
)
print("Connectivity update initiated:", response)
```

------

## 듀얼 스택 네트워크 유형 사용에 대한 고려 사항
<a name="msks-dual-stack-considerations"></a>
+ IPv6 지원은 현재 IPv6 전용이 아닌 듀얼 스택 모드(IPv4 \$1 IPv6-only)에서만 사용할 수 있습니다.
+ 다중 VPC 프라이빗 연결에는 듀얼 스택 네트워크 유형을 사용할 수 없습니다.
+ 모든 서브넷이 듀얼 스택 네트워크 유형을 지원하는 경우에만 기존 클러스터의 네트워크 유형을 IPv4에서 듀얼 스택으로 변경할 수 있습니다.
+ 듀얼 스택을 활성화한 후에는 IPv4 네트워크 유형으로 되돌릴 수 없습니다. 다시 전환하려면 클러스터를 삭제하고 다시 생성해야 합니다.
+ 이 경우 다음 IAM 권한이 있어야 합니다.
  + `ec2:DescribeSubnets` 및 ` ec2:ModifyVpcEndpoint`

# MSK Serverless 클러스터 모니터링
<a name="serverless-monitoring"></a>

Amazon MSK는 Amazon CloudWatch와 통합되므로 MSK 서버리스 클러스터에 대한 지표를 수집, 확인, 분석할 수 있습니다. 다음 테이블에 나와 있는 지표는 모든 서버리스 클러스터에 사용할 수 있습니다. 이러한 지표는 주제의 각 파티션에 대한 개별 데이터 포인트로 게시되므로 주제 수준에서 보려면 ‘합계’ 통계로 보는 것을 권장합니다.

Amazon MSK는 1분에 한 번씩 CloudWatch에 `PerSec` 지표를 게시합니다. 즉, 1분 동안의 ‘합계’ 통계는 `PerSec` 지표에 대한 초당 데이터를 정확하게 나타냅니다. 1분 이상의 기간 동안 초당 데이터를 수집하려면 CloudWatch 수학 표현식(`m1 * 60/PERIOD(m1)`)을 사용하세요.


**기본 모니터링 수준에서 사용할 수 있는 지표**  

| 이름 | 표시되는 경우 | 측정 기준 | 설명 | 
| --- | --- | --- | --- | 
| BytesInPerSec | 생산자가 주제에 쓴 후 | 클러스터 이름, 주제 |  클라이언트로부터 받은 초당 바이트 수입니다. 이 지표는 각 주제에 대해 사용할 수 있습니다.  | 
| BytesOutPerSec | 소비자 그룹이 주제에서 소비한 후 | 클러스터 이름, 주제 |  클라이언트에 전송된 초당 바이트 수입니다. 이 지표는 각 주제에 대해 사용할 수 있습니다.  | 
| FetchMessageConversionsPerSec | 소비자 그룹이 주제에서 소비한 후 | 클러스터 이름, 주제 |  주제에 대한 초당 가져오기 메시지 전환 횟수  | 
| EstimatedMaxTimeLag | 소비자 그룹이 주제에서 소비한 후 | 클러스터 이름, 소비자 그룹, 주제  | MaxOffsetLag 지표의 시간 추정치. | 
| MaxOffsetLag | 소비자 그룹이 주제에서 소비한 후 | 클러스터 이름, 소비자 그룹, 주제  | 주제의 모든 파티션에 대한 최대 오프셋 지연. | 
| MessagesInPerSec | 생산자가 주제에 쓴 후 | 클러스터 이름, 주제 | 주제에 대해 초당 수신되는 메시지 수 | 
| ProduceMessageConversionsPerSec | 생산자가 주제에 쓴 후 | 클러스터 이름, 주제 | 주제에 대한 초당 생성 메시지 전환 횟수 | 
| SumOffsetLag | 소비자 그룹이 주제에서 소비한 후 | 클러스터 이름, 소비자 그룹, 주제  | 주제의 모든 파티션에 대한 집계된 오프셋 지연 | 

**MSK 서버리스 지표를 보려면 다음을 수행합니다.**

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

1. 탐색 창의 **지표**에서 **모든 지표**를 선택합니다.

1. 지표에서 용어(**kafka**)를 검색합니다.

1. 다른 지표를 보려면 **AWS/Kafka/클러스터 이름, 주제** 또는 **AWS/Kafka/클러스터 이름, 소비자 그룹, 주제**를 선택하세요.