

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 什麼是 MSK Serverless？
<a name="serverless"></a>

**注意**  
MSK Serverless 可在美國東部 (俄亥俄)、美國東部 (維吉尼亞北部)、美國西部 (奧勒岡)、加拿大 (中部)、亞太區域 (孟買)、亞太區域 (新加坡)、亞太區域 (雪梨)、亞太區域 (東京)、亞太區域 (首爾)、歐洲 (法蘭克福)、歐洲 (斯德哥爾摩)、歐洲 (愛爾蘭)、歐洲 (巴黎) 和歐洲 (倫敦) 區域使用。

MSK Serverless 是 Amazon MSK 的叢集類型，可讓您執行 Apache Kafka 而無須管理和擴展叢集容量。它會自動佈建和擴展容量，同時管理您主題中的分區，因此您可以串流資料，而無須考量適當調整叢集大小或調整叢集的規模。MSK Serverless 提供以輸出量為基礎的定價模式，因此您只需按實際用量付費。若您的應用程式需要可自動擴展和縮減的隨需串流容量，請考量使用無伺服器叢集。

MSK Serverless 與 Apache Kafka 完全相容，因此您可以使用任何相容的用戶端應用程式來產生和取用資料。它還與下列服務整合：
+ AWS PrivateLink 提供私有連線
+ AWS Identity and Access Management (IAM)，用於使用 Java 和非 Java 語言進行身分驗證和授權。如需設定 IAM 用戶端的指示，請參閱 [設定 IAM 存取控制的用戶端](configure-clients-for-iam-access-control.md)。
+ AWS Glue 結構描述管理的結構描述登錄檔
+ Amazon Managed Service for Apache Flink (用於以 Apache Flink 為基礎的串流處理)
+  AWS Lambda 用於事件處理

**注意**  
MSK Serverless 需要所有叢集的 IAM 存取控制。不支援 Apache Kafka 存取控制清單 (ACL)。如需詳細資訊，請參閱[IAM 存取控制](iam-access-control.md)。  
如需有關適用於 MSK Serverless 的服務配額相關資訊，請參閱 [MSK Serverless 配額](limits.md#serverless-quota)。

若要開始使用無伺服器叢集，並進一步了解無伺服器叢集的組態和監控選項，請參閱下列內容。

**Topics**
+ [使用 MSK 無伺服器叢集](serverless-getting-started.md)
+ [MSK Serverless 叢集的組態屬性](serverless-config.md)
+ [設定雙堆疊網路類型](serverless-config-dual-stack.md)
+ [監控 MSK Serverless 叢集](serverless-monitoring.md)

# 使用 MSK 無伺服器叢集
<a name="serverless-getting-started"></a>

本教學課程將說明如何建立 MSK Serverless 叢集、建立可存取叢集的用戶端機器、使用用戶端在叢集上建立主題，以及將資料寫入這些主題的相關範例。此演練不代表您在建立無伺服器叢集時可選擇的所有選項。為求簡化起見，我們在此演練的不同部分中選擇預設選項。這並不表示只有這些選項才能用於設定無伺服器叢集。您也可以使用 AWS CLI 或 Amazon MSK API。如需詳細資訊，請參閱 [Amazon MSK API Reference 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 Serverless 叢集。接著則是收集叢集的相關資訊。這是您在稍後步驟中建立可傳送資料至叢集的用戶端時所需的資訊。

**建立無伺服器叢集**

1. 登入 AWS 管理主控台，並在 [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 Serverless 叢集，從最多五個不同的 VPC 連線用戶端。若要協助用戶端應用程式在中斷時切換至其他可用區域，您必須在每個 VPC 中至少指定兩個子網路。

1. 選擇 **Create Cluster** (建立叢集)。

**收集叢集的相關資訊**

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. 開啟位於 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，選擇**政策**。

1. 選擇**建立政策**。

1. 選擇 **JSON** 索引標籤，然後使用下列 JSON 取代編輯器視窗中的 JSON。

   在下列範例中，取代下列項目：
   + *region*，其中包含 AWS 區域 您建立叢集的 程式碼。
   + 帳戶 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>

在此步驟中，您會執行兩項任務。第一項任務是建立一個 Amazon EC2 執行個體作為 Apache Kafka 用戶端機器。第二項任務是在機器上安裝 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) – Kernel 5.10，SSD 磁碟區類型** 作為 **Amazon Machine Image (AMI) 類型**。

1. 確認選取 **t2.micro** 執行個體類型。

1. 在**金鑰對 (登入)** 下，選擇**建立新金鑰對**。輸入 **MSKServerlessKeyPair** 作為**金鑰對名稱**。選擇**下載金鑰對**。或者，您也可以使用現有的金鑰對。

1. 針對**網路設定**，選擇**編輯**。

1. 在 **VPC** 下，輸入無伺服器叢集的虛擬私有雲端 (VPC) ID。此為以 Amazon VPC 服務為基礎的 VPC，您在建立叢集後會儲存其 ID。

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

   使用此命令，您也可以[下載其他或更新版本](https://github.com/aws/aws-msk-iam-auth/releases)的 Amazon MSK IAM JAR 檔案。

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

  使用 MSK Serverless 叢集進行 IAM 身分驗證時，需要此 JAR 檔案。
+ 執行 Kafka 命令時，您可能需要確保 `classpath`包含 AWS MSK IAM JAR 檔案。若要執行此操作，請執行以下其中一項操作：
  + 將`CLASSPATH`環境變數設定為包含 Kafka 程式庫，如下列範例所示。

    ```
    export CLASSPATH=<path-to-your-kafka-installation>/libs/*:<path-to-your-kafka-installation>/libs/aws-msk-iam-auth-2.3.0-all.jar
    ```
  + 使用具有明確 的完整 Java 命令來執行 Kafka 命令`classpath`，如下列範例所示。

    ```
    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`目錄中。或者，您可以使用具有明確 的完整 Java 命令來執行 Kafka 命令`classpath`，如下列範例所示。

```
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. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 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) | 刪除 | 可以，但僅限於主題建立時 |  | 
|  [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)  | 250 GiB | 是 | 無限制；將其設定為 -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 應用程式可能會嘗試使用 segment.bytes 組態值建立內部主題，這與 MSK Serverless 允許的內容不同。如需使用 MSK Serverless 設定 Kafka 串流的詳細資訊，請參閱 [搭配 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-4。此外，您必須在命令中包含 `--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 伺服器字串>* 取代為 Amazon MSK Serverless 叢集的引導伺服器端點，並將 *<topic\$1name>* 取代為您要修改的主題名稱。

`--command-config client.properties` 參數可確保 Kafka 命令列工具使用適當的組態設定來與 Amazon MSK Serverless 叢集通訊。

# 設定雙堆疊網路類型
<a name="serverless-config-dual-stack"></a>

 對於使用 Kafka 3.6.0 版或更新版本的現有 MSK Serverless 叢集，Amazon MSK 支援雙堆疊網路類型，無需額外費用。透過雙堆疊聯網，您的叢集可以使用 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 動作所需的完整許可清單，請參閱 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 管理主控台 AWS CLI、 或 AWS SDK 更新 MSK Serverless 叢集的網路類型。

------
#### [ Using AWS 管理主控台 ]

1. 開啟 Amazon MSK 主控台，網址為 [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/)。

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 支援目前僅適用於雙堆疊模式 (IPv4 \$1 IPv6)，不能IPv6-only使用。
+ 雙堆疊網路類型不適用於多 VPC 私有連線。
+ 只有在現有叢集的所有子網路都支援雙堆疊網路類型時，才能將網路類型從 IPv4 變更為雙堆疊。
+ 啟用雙堆疊後，您無法還原為 IPv4 網路類型。若要切換回，您必須刪除並重新建立叢集。
+ 您必須具備下列 IAM 許可：
  + `ec2:DescribeSubnets` 和 ` ec2:ModifyVpcEndpoint`

# 監控 MSK Serverless 叢集
<a name="serverless-monitoring"></a>

Amazon MSK 與 Amazon CloudWatch 整合，讓您可收集、檢視和分析 MSK Serverless 叢集的指標。下表中顯示的指標適用於所有無伺服器叢集。由於這些指標是以主題中每個分區的個別資料點形式發布，建議您以 'SUM' 統計資料檢視它們，以取得主題層級檢視。

Amazon MSK 會以每分鐘一次的頻率，將 `PerSec` 指標發布至 CloudWatch。這表示一分鐘期間的 'SUM' 統計資料可精確地代表 `PerSec` 指標的每秒資料。如要收集超過一分鐘的每秒資料，請使用下列 CloudWatch 數學運算式：`m1 * 60/PERIOD(m1)`。


**DEFAULT 監控層級提供的指標**  

| 名稱 | 可見時 | 維度 | Description | 
| --- | --- | --- | --- | 
| BytesInPerSec | 生產者寫入主題之後 | 叢集名稱、主題 |  從用戶端接收的每秒位元組數量。此指標適用於每個主題。  | 
| BytesOutPerSec | 取用者群組取用一個主題之後 | 叢集名稱、主題 |  傳送至用戶端的每秒位元組數量。此指標適用於每個主題。  | 
| FetchMessageConversionsPerSec | 取用者群組取用一個主題之後 | 叢集名稱、主題 |  主題的每秒擷取訊息轉換次數。  | 
| EstimatedMaxTimeLag | 取用者群組取用一個主題之後 | 叢集名稱、取用者群組、主題  | MaxOffsetLag 指標的估計時間。 | 
| MaxOffsetLag | 取用者群組取用一個主題之後 | 叢集名稱、取用者群組、主題  | 主題中所有分區的最大偏移延遲。 | 
| MessagesInPerSec | 生產者寫入主題之後 | 叢集名稱、主題 | 主題每秒傳入訊息的數量。 | 
| ProduceMessageConversionsPerSec | 生產者寫入主題之後 | 叢集名稱、主題 | 主題的每秒產生訊息轉換次數。 | 
| SumOffsetLag | 取用者群組取用一個主題之後 | 叢集名稱、取用者群組、主題  | 主題中所有分區的彙整偏移延遲。 | 

**檢視 MSK Serverless 指標**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格的**指標**下方，選擇**所有指標**。

1. 在指標中搜尋 **kafka** 詞語。

1. 選擇 **AWS/Kafka/叢集名稱、主題**或 **AWS/Kafka/叢集名稱、取用者群組、主題**，以查看不同的指標。