Amazon MSK
VeloDB CloudをAmazon MSKクラスターに接続し、プライベートマルチVPC接続を通じてKafkaトピックからデータを取り込みます。
このガイドはSaaSセットアップについて説明しており、VeloDB Cloudはステップ5のインポートUIを通じて設定する管理されたマルチVPCプライベート接続を介してMSKクラスターに接続します。
BYOCの場合、VeloDB Cloudはお客様自身のVPC内で実行されるため、マルチVPCプライベート接続またはVPCピアリングを使用してMSKクラスターへのネットワークアクセスを自分で設定します(Access from within AWS but outside the cluster's VPCを参照)。その後、Routine LoadのSQLステートメント(CREATE ROUTINE LOADを参照)を使用して取り込みジョブを作成します。BYOCのインポートUIは近日公開予定です。
前提条件
開始する前に、以下を確認してください:
- MSKクラスター、Secrets Managerシークレット、IAMポリシーを作成および設定する権限を持つAWSアカウント
- MSKクラスターと同じAWSリージョンにあるVeloDB Cloudウェアハウス(SaaSまたはBYOC)
- MSKバージョン3.x以前(バージョン4.x以上はサポートされていません)
ステップ1:MSKクラスターの準備
ほとんどのお客様は既にMSKクラスターをお持ちです。既にお持ちの場合は、新しいクラスターの作成をスキップしてください。クラスターに以下の設定(ACLポリシーが無効、SASL/SCRAM認証が有効、Secrets Managerシークレットが関連付けられている)があることを確認し、不足している設定を適用してから、ステップ2でマルチVPC接続を有効にしてください。既存のクラスターでマルチVPC接続を有効にする場合は、Get started using multi-VPC private connectivityに従ってください。
新しいクラスターを作成する場合、作成には約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 secretの関連付け
MSKはSASL/SCRAM認証情報を保存するためにSecrets Managerを使用します。クラスター作成時または作成後にsecretをクラスターに関連付けてください。AWSの完全な要件については、Sign-in credentials authentication with AWS Secrets Managerを参照してください。
要件:
- secret名は**
AmazonMSK_で始まる必要があります** - Encryption keyは
aws/secretsmanagerであってはいけません。カスタマー管理のKMSキーまたは他のサービス用のデフォルトAWS管理キーを使用してください。aws/secretsmanagerを使用するとMSKの関連付けが失敗します。
既存のsecretがない場合は、AWS Secrets ManagerでAmazonMSK_接頭辞の付いた名前でsecretを作成し、それをクラスターに関連付けてください。


新しいsecretを作成する際は、Other type of secretを選択し、ユーザー名とパスワードをキー/値ペアとして入力してください:


セキュリティグループ(インバウンド)の更新
MSKクラスターのセキュリティグループで、ポート9096-9098(SASL/SCRAMおよびIAMブローカーポート)でのトラフィックを許可するインバウンドルールを追加してください。ポート9096はSASL/SCRAMブローカーポート、ポート9098は次のステップでのACL付与に使用されるIAMブローカーポートです。送信元をMSKクラスター自体のセキュリティグループに設定し、クラスターと同じVPC内でこのセキュリティグループを使用するマシンからACL付与を実行してください。MSKの完全なポートマッピングについては、Port informationを参照してください。
VeloDB CloudのマルチVPCプライベート接続用にポート14098-14100を開くため、ステップ4で2回目のセキュリティグループ更新が必要です。

関連付けられたユーザーのACL認可を付与
MSKクラスターと同じVPC内のマシンから以下のコマンドを実行してください。Java JDKが必要なKafka CLIが必要です。
-
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を選択します。背景については、Amazon MSK multi-VPC private connectivity in a single Regionを参照してください。


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


{
"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クラスターのセキュリティグループにインバウンドルールを追加し、ポート14098-14100でのトラフィックを許可します。ソースとしてMSKクラスター自身のセキュリティグループを使用してください。VeloDB Cloudは異なるAWSアカウントからmulti-VPCプライベートエンドポイント経由で接続します。このアクセスはクロスアカウントのため、multi-VPCネットワークインターフェースはクラスターのセキュリティグループの下であなたのVPC内で動作するので、自己参照ルールによりトラフィックが許可されます。VeloDBのアカウントからセキュリティグループやCIDRを参照することはできません。これらのポートは、ステップ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でコピーしたmulti-VPCブートストラップサーバーを貼り付け
- Authentication: SASLを選択し、SASL/SCRAMのユーザー名とパスワードを入力し、SASL MechanismをSCRAM-SHA-512に設定

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

**Private endpoint (multi-VPC)**経由でMSKクラスター内のKafkaトピックからデータを消費するようにインポートジョブを設定してください。