はじめに
「手を動かして学ぶ!KafkaとPythonによるAWSストリーミングデータ分析入門【30日チャレンジ】」10日目です。昨日は、AWSリソースへのアクセスを安全に管理するためのIAMロールを作成しました。
今日は、いよいよAWS上でAmazon MSKクラスターを実際に作成していきます。これにより、ローカル環境で動かしていたKafkaをAWSのマネージドサービスに置き換え、本番運用に耐えうるデータ基盤の第一歩を踏み出します。
1. MSKクラスター作成の前に
MSKクラスターを作成するには、いくつかの前提条件があります。
- VPC (Virtual Private Cloud): MSKクラスターは特定のVPC内に作成されます。今回はデフォルトのVPCを使用しても構いませんが、本番環境では専用のVPCを作成することが推奨されます。
-
IAMロール: 昨日の記事で作成したEC2がMSKにアクセスするためのIAMロール(
KafkaClientEC2Roleなど)が必要です。
今回は、これらの設定が完了していることを前提として進めます。
2. Amazon MSKクラスターを作成する
AWSマネジメントコンソールにログインし、「MSK」と検索してサービスを開きます。
ステップ1:クラスターの作成開始
MSKダッシュボードで「クラスターを作成」をクリックします。
ステップ2:作成方法の選択
「クラスター作成方法」で「クイック作成」を選択します。これは、最低限の設定で手軽にクラスターを作成できるモードです。本番環境では「カスタム作成」で詳細な設定を行いますが、今回は学習のためクイック作成を選びます。
ステップ3:クラスター設定
以下の項目を設定します。
-
クラスター名:
kafka-challenge-clusterなど、わかりやすい名前を付けます。 - クラスターバージョン: 「Apache Kafka version 3.6.1」 を選択します。これは、最新のKRaftモードをサポートしているバージョンです。
-
ブローカータイプ:
kafka.t3.smallを選択します。これは開発・テスト用の最も小さなインスタンスタイプです。 - ブローカー数: 「2」を選択します。これにより、2つの異なるアベイラビリティゾーンにブローカーが配置され、高い可用性が確保されます。
- VPC: デフォルトのVPCを選択します。
-
サブネット: デフォルトVPC内の異なる2つのサブネット(例:
ap-northeast-1aとap-northeast-1c)を選択します。
設定を終えたら、「クラスターを作成」をクリックします。
ステップ4:クラスターの起動
クラスターの作成には15〜20分程度かかります。ステータスが「Creating」から「Active」に変わるまで待ちましょう。
3. ブローカーエンドポイントの確認
クラスターがアクティブになったら、Pythonクライアントから接続するためにブローカーエンドポイントを確認する必要があります。
- 作成したクラスター名(
kafka-challenge-cluster)をクリックします。 - 「クラスター概要」の「ブローカーのプロパティ」セクションに、「ブートストラップブローカー」という項目があります。ここに表示されている文字列が、Kafkaクライアントが接続するためのエンドポイントです。
b-1.kafka-challenge-cluster.<some_id>.c1.kafka.ap-northeast-1.amazonaws.com:9092,b-2.kafka-challenge-cluster.<some_id>.c1.kafka.ap-northeast-1.amazonaws.com:9092
このエンドポイントをコピーしておきましょう。今後の記事で、このエンドポイントを使ってEC2インスタンスからMSKに接続します。
4. セキュリティグループの設定
最後に、MSKクラスターへのアクセスを許可するセキュリティグループを設定します。デフォルトでは、同じVPC内であっても外部からのアクセスは許可されていません。
- MSKクラスターの画面で「ネットワーク」タブに移動します。
- 「セキュリティグループ」のリンクをクリックして、クラスターに紐づいたセキュリティグループの設定画面を開きます。
- 「インバウンドのルール」タブを選択し、「インバウンドのルールを編集」をクリックします。
- 「ルールを追加」をクリックし、以下の設定を追加します。
- タイプ: 「カスタムTCP」
-
ポート範囲:
9092 -
ソース: 今回はEC2インスタンスからアクセスするため、EC2インスタンスにアタッチする予定のセキュリティグループIDを指定します。これにより、特定のEC2インスタンスからの通信のみを許可します。学習のためであれば、「
0.0.0.0/0」を指定してすべてのIPアドレスからのアクセスを許可しても良いですが、本番環境では絶対に行わないでください。
- 「ルールを保存」をクリックします。
これで、EC2インスタンスがMSKクラスターに安全に接続するためのネットワーク設定が完了しました。
まとめと次回予告
今日は、AWS上でAmazon MSKクラスターを実際に作成しました。これにより、ローカル環境での学習から一歩進み、本番環境を見据えたデータ基盤を構築する準備が整いました。
明日は、このMSKクラスターに接続するためのEC2インスタンスを準備し、Pythonアプリケーションをデプロイします。
11日目: VPCとセキュリティグループを設計してMSKへの接続を許可
お楽しみに!