

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# MSK サーバーレスクラスターを使用する
<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 サーバーレスクラスターを作成する](create-serverless-cluster.md)
+ [MSK サーバーレスクラスターのトピックの IAM ロールを作成する](create-iam-role.md)
+ [MSK サーバーレスクラスターにアクセスするためのクライアントマシンを作成する](create-serverless-cluster-client.md)
+ [Apache Kafka トピックを作成する](msk-serverless-create-topic.md)
+ [MSK サーバーレスでデータを生成および消費する](msk-serverless-produce-consume.md)
+ [MSK サーバーレス用に作成したリソースを削除する](delete-resources.md)

# MSK サーバーレスクラスターを作成する
<a name="create-serverless-cluster"></a>

このステップでは、2 つのタスクを実行します。まず、デフォルト設定で MSK サーバーレスクラスターを作成します。次に、作成したクラスター に関する情報を収集します。これは、後のステップでクラスターにデータを送信できるクライアントを作成するときに必要となる情報です。

**サーバーレスクラスターを作成する**

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. **[すべてのクラスター設定]** の下の表に注意してください。この表は、ネットワークや可用性などの重要な設定のデフォルト値のリストと、クラスターの作成後に各設定を変更できるかどうかを示しています。クラスターを作成する前に設定を変更するには、**[作成方法]** で **[カスタム作成]** オプションを選択する必要があります。
**注記**  
最大 5 つの異なる VPC のクライアントを MSK サーバーレスクラスターと接続できます。機能停止時にクライアントアプリケーションが別のアベイラビリティーゾーンに切り替えられるようにするには、各 VPC に少なくとも 2 つのサブネットを指定する必要があります。

1. **Create cluster** (クラスターの作成) を選択します。

**クラスター情報を取得する**

1. **[クラスターの概要]** ページで、**[クライアント情報の表示]** を選択します。このボタンはAmazon MSK がクラスターの作成を完了するまで、グレーで表示されます。ボタンがアクティブになり使用可能になるまで、数分かかる場合があります。

1. **Endpoint** (エンドポイント) ラベルの下にある文字列をコピーします。これはブートストラップサーバー文字列です。

1. **[プロパティ]** タブを選択します。

1. **[ネットワーク設定]** セクションで、サブネットとセキュリティグループの ID をコピーし、保存します。この情報は後でクライアントマシンを作成する際に必要になります。

1. いずれかのサブネットを選択します。これにより、Amazon VPC コンソールが開きます。サブネットに関連付けられた Amazon VPC の ID を探します。後で使用するため、この Amazon VPC ID を保存します。

**次のステップ**

[MSK サーバーレスクラスターのトピックの IAM ロールを作成する](create-iam-role.md)

# MSK サーバーレスクラスターのトピックの IAM ロールを作成する
<a name="create-iam-role"></a>

このステップでは、2 つのタスクを実行します。最初のタスクは、クラスターでトピックを作成し、それらのトピックにデータを送信するためのアクセスを許可する IAM ポリシーを作成することです。2 番目のタスクは、IAM ロールを作成し、作成したポリシーをそのロールに関連付けることです。後のステップでは、このロールを引き受けるクライアントマシンを作成し、それを使用してクラスター上にトピックを作成し、そのトピックにデータを送信します。

**トピックを作成し、書き込むことを可能にする IAM ポリシーを作成する**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで [**Policies**] (ポリシー) を選択します。

1. **[ポリシーを作成]** を選択します。

1. **JSON** タブを選択し、エディタウィンドウの JSON を次の JSON に置き換えます。

   以下の例では、以下を置き換えます。
   + *region* と、クラスターを作成した AWS リージョン のコード。
   + アカウント ID の例: *123456789012*。 AWS アカウント 
   + *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. [**Next: Tags (次へ: タグ)**] を選択します。

1. **[次へ: レビュー]** を選択します。

1. ポリシー名にわかりやすい名前 (**msk-serverless-tutorial-policy** など) を入力します。

1. [**Create policy**] (ポリシーの作成) を選択します。

**IAM ロールを作成し、ポリシーを適用する**

1. ナビゲーションペインで [**Roles**] (ロール) を選択します。

1. **Create role** (ロールの作成) を選択します。

1. [**Common use cases**] (一般的なユースケース) で [**EC2**] を選択し、[**Next: Permissions**] (次へ: アクセス許可) を選択します。

1. 検索ボックスに、このチュートリアル用に以前に作成したポリシーの名前を入力します。次に、ポリシーの左側にあるボックスをオンにします。

1. [**Next: Tags (次へ: タグ)**] を選択します。

1. **[次へ: レビュー]** を選択します。

1. ロール名に、わかりやすい名前 (**msk-serverless-tutorial-role** など) を入力します。

1. [**ロールの作成**] を選択してください。

**次のステップ**

[MSK サーバーレスクラスターにアクセスするためのクライアントマシンを作成する](create-serverless-cluster-client.md)

# MSK サーバーレスクラスターにアクセスするためのクライアントマシンを作成する
<a name="create-serverless-cluster-client"></a>

このステップでは、2 つのタスクを実行します。最初のタスクでは、Apache Kafka クライアントマシンとして使用する Amazon EC2 インスタンスを作成します。2 番目のタスクでは、マシンに Java および Apache Kafka ツールをインストールします。

**クライアントマシンを作成するには**

1. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. **[インスタンスを起動]** を選択します。

1. クライアントマシンにわかりやすい **[名前]** (**msk-serverless-tutorial-client** など) を入力します。

1. **[Amazon マシンイメージ (AMI) のタイプ]** については、**[Amazon Linux 2 AMI (HVM) - カーネル 5.10、SSD ボリュームタイプ]** を選択したままにします。

1. **t2.micro** インスタンスタイプを選択したままにします。

1. **[キーペア (ログイン)]** で、**[新しいキーペアの作成]** を選択します。**[キーペア名]** に **MSKServerlessKeyPair** と入力します。**[キーペアのダウンロード]** を選択します。既存のキーペアを使用することもできます。

1. **[ネットワーク設定]** で、**[編集]** を選択してください。

1. **[VPC]** で、サーバーレスクラスターの仮想プライベートクラウド (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 サーバーレスクラスターのトピックの IAM ロールを作成する](create-iam-role.md) で作成した IAM ロールを選択します。

1. **[Launch]** (起動する) を選択します。

1. 左のナビゲーションペインの [**インスタンス**] を選択してください。新しく作成した Amazon EC2 インスタンスを表す行のチェックボックスをオンにします。これ以降は、このインスタンスのことを*クライアントマシン*と呼びます。

1. **[Connect]** (接続) を選択し、指示に従ってクライアントマシンに接続します。

**クライアントマシンで 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>
+ トピックを作成する前に、MSK AWS 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 Serverless クラスターでの 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 サーバーレスでデータを生成および消費する](msk-serverless-produce-consume.md)

# MSK サーバーレスでデータを生成および消費する
<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** キーを押します。このステップを 2、3 回繰り返します。行を入力して **Enter** キーを押すたびに、その行は個別のメッセージとしてクラスターに送信されます。

1. クライアントマシンへの接続を開いたままにして、そのマシンへ 2 番目の別の接続を新しいウィンドウで開きます。

1. クライアントマシンへの 2 回目の接続を使用して、以下のコマンドでコンソールコンシューマーを作成します。*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`問題が発生した場合は、正しいディレクトリから実行していることを確認してください。また、MSK AWS 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 サーバーレス用に作成したリソースを削除する](delete-resources.md)

# MSK サーバーレス用に作成したリソースを削除する
<a name="delete-resources"></a>

このステップでは、このチュートリアルで作成したリソースを削除します。

**クラスターの削除**

1. [https://console.aws.amazon.com/msk/home](https://console.aws.amazon.com/msk/home) で Amazon MSK コンソールを開きます。

1. クラスターの一覧で、このチュートリアルで作成したクラスターを選択します。

1. **[Actions]** (アクション) で**[Delete cluster]** (クラスターの削除) を選択します。

1. フィールドに「`delete`」を入力し、**[Delete]** (削除) を選択します。

**クライアントマシンの停止**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. Amazon EC2 インスタンスのリストで、このチュートリアルで作成したクライアントマシンを選択します。

1. **[Instance state]** (インスタンスの状態) を選択し、**[Terminate instance]** (インスタンスの終了) をクリックします。

1. **[Terminate]** (終了) を選択します。

**IAM ポリシーとロールを削除するには**

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

1. ナビゲーションペインで **[Roles]** (ロール) を選択します。

1. 検索ボックスに、このチュートリアル用に作成した IAM ロールの名前を入力します。

1. ロールを選択します。**[ロールの削除]** を選択し、削除を確定します。

1. ナビゲーションペインで [**Policies**] (ポリシー) を選択します。

1. 検索ボックスに、このチュートリアル用に作成したポリシーの名前を入力します。

1. ポリシーを選択すると、その概要ページが開きます。ポリシーの**[Summary]** (概要) ページで **[Delete policy]** (ポリシーの削除) を選択します。

1. **[削除]** を選択します。