はじめに
「手を動かして学ぶ!KafkaとPythonによるAWSストリーミングデータ分析入門【30日チャレンジ】」11日目です。昨日は、ついにAmazon MSKクラスターを作成しました。
今日は、そのMSKクラスターに、私たちがこれから使うEC2インスタンスが安全にアクセスできるように、VPCとセキュリティグループの設定を具体的に見ていきます。これは、AWSでのネットワーク通信の基本であり、非常に重要なステップです。
1. AWSネットワークの基本:VPCとセキュリティグループ
まずは、AWSのネットワークの基本概念を復習しましょう。
- VPC(Virtual Private Cloud): AWSクラウド内に作成する、論理的に隔離された仮想ネットワークです。VPCは、データセンター内に自分だけのネットワークを構築するようなものだと考えてください。この中に、EC2インスタンスやMSKクラスターなどのAWSリソースを配置します。
- セキュリティグループ(Security Group): 仮想的なファイアウォールとして機能し、インスタンスへのインバウンド(受信)およびアウトバウンド(送信)のトラフィックを制御します。どのIPアドレス、どのポートからの通信を許可するかを細かく設定できます。
MSKクラスターとEC2インスタンスは、同じVPC内に配置する必要があります。そして、この2つの間の通信を許可するために、セキュリティグループを設定します。
2. MSKクラスターのセキュリティグループの確認
10日目でMSKクラスターを作成した際、クラスターに自動的に関連付けられたセキュリティグループがあります。まずは、そのセキュリティグループを確認しましょう。
- AWSマネジメントコンソールで「MSK」サービスを開きます。
- 作成したクラスターをクリックし、「プロパティ」タブに移動します。
- 「ネットワーク設定」セクションで、「セキュリティグループ」のリンクをクリックします。
このリンクから、MSKクラスターに適用されているセキュリティグループの設定画面に移動できます。
3. セキュリティグループルールの設定
今回は、EC2インスタンスからMSKクラスターのKafkaポート(9092番)へのアクセスを許可するルールを設定します。
ステップ1:インバウンドルールを編集
-
MSKのセキュリティグループ画面で、「インバウンドルール」タブを選択し、「インバウンドルールを編集」をクリックします。
-
「ルールを追加」をクリックします。
-
以下の設定を行います。
- タイプ: 「カスタムTCP」
-
ポート範囲:
9092 -
ソース: ここが最も重要です。EC2インスタンスにアタッチする予定のセキュリティグループIDを指定します。セキュリティグループIDは
sg-xxxxxxxxxxxxxxxxのような形式です。これにより、「特定のEC2インスタンスからのみ」のアクセスを許可できます。
もし、まだEC2インスタンスのセキュリティグループを作成していない場合は、代わりに「マイIP」を選択して、自分のPCからMSKへのアクセスをテストすることもできます。ただし、本番環境では必ず最小権限の原則に従ってください。
-
設定が完了したら、「ルールを保存」をクリックします。
ステップ2:アウトバウンドルールの確認
MSKクラスターが外部と通信する必要はほとんどありませんが、EC2インスタンスがMSKにアクセスするためには、アウトバウンドルールも確認しておく必要があります。
通常、デフォルトのセキュリティグループでは、すべてのアウトバウンド通信が許可されています(0.0.0.0/0)。これが設定されていれば、EC2への通信は許可されています。
4. まとめと次回予告
今日は、AWS上で安全な通信を実現するために、VPCとセキュリティグループの役割を理解し、MSKクラスターへのアクセスを許可する設定を行いました。この設定がなければ、EC2インスタンスからMSKクラスターに接続することはできません。
明日は、いよいよこの設定を活かして、MSKクラスターに接続するEC2インスタンスを実際に構築し、Pythonアプリケーションをデプロイします。
12日目: EC2インスタンスを準備して、MSKクラスターに接続する
お楽しみに!