Amazon MSK
このガイドでは、VeloDB CloudでAmazon MSKクラスターをセットアップし、プライベートマルチVPC接続を介してKafkaトピックからのデータ取り込みを可能にする手順について説明します。
前提条件
開始する前に、以下が必要です:
- MSKクラスター、Secrets Managerシークレット、IAMポリシーを作成および設定する権限を持つAWSアカウント
- MSKクラスターと同じAWSリージョンにあるVeloDB Cloud BYOCウェアハウス
- MSKバージョン3.x以前(バージョン4.x以降はサポートされていません)
ステップ 1: MSKクラスターを作成する
クラスター作成には約40分かかります。後で時間のかかる更新を避けるため、作成時に以下の設定を構成してください。
ACLポリシーを無効にする
SASL/SCRAMクロスVPC接続を有効にするには、クラスターを作成する前にデフォルトのACL動作を無効にする必要があります。MSKコンソールで、Cluster configurationsに移動し、以下のプロパティで新しい設定を作成します:
allow.everyone.if.no.acl.found=false


クラスタープロパティを設定する際に、この設定を適用します。

認証を有効にする
クラスター作成時、Security settingsで以下の両方を有効にします:
- SASL/SCRAM authentication:ユーザー名/パスワード認証情報を使用したクロスVPCアクセスに必要
- IAM role-based authentication:kafka-cli経由でACL権限を付与するために必要

AWS Secrets Managerシークレットを関連付ける
MSKはSecrets Managerを使用してSASL/SCRAM認証情報を保存します。クラスター作成時または作成後にシークレットを関連付けます。
要件:
- シークレット名は**
AmazonMSK_で始まる必要があります** - Encryption keyは
aws/secretsmanagerであってはいけません。カスタマー管理のKMSキーまたは他のサービス用のデフォルトAWS管理キーを使用してください。aws/secretsmanagerを使用するとMSKの関連付けが失敗します。
既存のシークレットがない場合は、AmazonMSK_のプレフィックスが付いた名前でAWS Secrets Managerにシークレットを作成し、クラスターに関連付けます。


新しいシークレットを作成する際は、Other type of secretを選択し、ユーザー名とパスワードをキー/値ペアとして入力します:


セキュリティグループを更新する(インバウンド)
MSKクラスターのセキュリティグループで、VeloDB Cloud BYOCのVPC CIDRからポート9096-9098(SASL/SCRAMおよびTLSブローカーポート)のトラフィックを許可するインバウンドルールを追加します。これらのポートは、次のステップのIAMベースACL付与で使用され、同じVPC内から実行されます。
ステップ4では、VeloDB CloudのマルチVPCプライベート接続用にポート14098-14100を開くため、2回目のセキュリティグループ更新が必要です。

関連付けられたユーザーにACL認可を付与する
MSKクラスターと同じVPC内のマシンから以下のコマンドを実行します。Kafka CLI(Java JDKが必要)が必要です。
-
AWS認証情報を設定します。 認証情報が設定されていることを確認するために以下を実行します:
aws sts get-caller-identity
認証情報が設定されていない場合は、EC2インスタンスにIAMロールを追加するか、aws configureを実行してください。
-
client-msk-iam.propertiesを追加してKafka CLIのconfigディレクトリに配置します: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 -
IAM認証ライブラリをダウンロードして、Kafka CLIの
libsディレクトリに配置します:aws-msk-iam-auth-1.1.9-all.jar -
IAMプライベートエンドポイントを取得します。 MSKコンソールで、View client informationをクリックし、IAMブートストラップサーバーエンドポイントをコピーします。

-
ACL権限を付与します。SASL/SCRAMユーザー名に対して権限を付与します。プレースホルダーをMSKクラスターのIAMプライベートエンドポイントと関連するユーザー名に置き換えてください:
./bin/kafka-acls.sh --bootstrap-server <MSK_IAM_PRIVATE_ENDPOINT> \
--command-config ./config/client-msk-iam.properties \
--add --allow-principal User:<USERNAME> \
--operation All --topic '*' --group '*' --cluster

ステップ2: マルチVPC接続を有効にする
マルチVPC接続の有効化には約40分かかります。
MSKクラスターのNetworking設定で、Multi-VPC connectivityを有効にし、認証タイプとしてSASL/SCRAM authenticationを選択します。


SASL/SCRAMオプションが利用できない場合、クラスターACLポリシーが無効化されていません。クラスター設定(allow.everyone.if.no.acl.found=false)を更新して、再試行してください。
ステップ3: VeloDB Cloudアカウントアクセスを付与する
MSKコンソールで、Securityに移動し、Edit cluster policyをクリックします。VeloDB CloudがVPC接続を作成し、ブローカー情報を取得できるように、以下のリソースベースのポリシーをアタッチします。Resource ARNをクラスターのARNに置き換えてください。


{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::757278738533:root"
},
"Action": [
"kafka:CreateVpcConnection",
"kafka:GetBootstrapBrokers",
"kafka:DescribeCluster",
"kafka:DescribeClusterV2"
],
"Resource": "arn:aws:kafka:<REGION>:<ACCOUNT_ID>:cluster/<CLUSTER_NAME>/<CLUSTER_ID>"
}
]
}
ステップ 4: VeloDB アクセス用のセキュリティグループの更新
MSK クラスターのセキュリティグループにインバウンドルールを追加して、VeloDB Cloud BYOC VPC CIDR からポート 14098-14100 へのトラフィックを許可します。これらのポートは、VeloDB Cloud がマルチ VPC プライベートエンドポイント経由で接続するために使用されます(ステップ 1 で開いたポートとは異なり、これらは同一 VPC ブローカーアクセス用です)。

ステップ 5: VeloDB Cloud を MSK に接続
AWS Console で:
-
MSK クラスターに移動し、cluster ARN をコピーします。

-
View client information に移動し、SASL/SCRAM 用の Private endpoint (multi-VPC) ブートストラップサーバーをコピーします。次のステップで必要になります。

VeloDB Cloud で:
-
Import に移動し、Add Import Job をクリックします。Reverse Private Endpoint を有効にし、Set up Connection をクリックします。

-
Set up Connection パネルで、認証タイプとして SASL/SCRAM を選択し、cluster ARN を入力します。

-
インポートジョブの詳細を入力します:
- Brokers: ステップ 2 でコピーしたマルチ VPC ブートストラップサーバーを貼り付け
- Authentication: SASL を選択し、SASL/SCRAM のユーザー名とパスワードを入力し、SASL Mechanism を SCRAM-SHA-512 に設定

-
Next をクリックして接続設定を完了します。VeloDB Cloud が MSK クラスターへのプライベートエンドポイント(マルチ VPC)を確立します。
ステップ 6: MSK クラスターへのアクセス
接続が確立されると、MSK クラスターが Reverse Private Endpoint テーブルに Available 接続ステータスで表示されます。

Private endpoint (multi-VPC) 経由で MSK クラスター内の Kafka トピックからデータを取得するようにインポートジョブを設定します。