メインコンテンツまでスキップ

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

MSK cluster configurations list

Create MSK configuration with ACL disabled

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

Apply custom configuration during cluster creation

認証を有効化

クラスター作成時、Security settingsで以下の両方を有効化してください:

  • SASL/SCRAM authentication:ユーザー名/パスワード認証によるVPC間アクセスに必要
  • IAM role-based authentication:kafka-cli経由でACL権限を付与するために必要

Enable SASL/SCRAM and IAM authentication

AWS Secrets Manager secretの関連付け

MSKはSASL/SCRAM認証情報を保存するためにSecrets Managerを使用します。クラスター作成時または作成後にsecretをクラスターに関連付けてください。AWSの完全な要件については、Sign-in credentials authentication with AWS Secrets Managerを参照してください。

要件:

  • secret名は**AmazonMSK_で始まる必要があります**
  • Encryption keyaws/secretsmanagerであってはいけません。カスタマー管理のKMSキーまたは他のサービス用のデフォルトAWS管理キーを使用してください。aws/secretsmanagerを使用するとMSKの関連付けが失敗します。

既存のsecretがない場合は、AWS Secrets ManagerでAmazonMSK_接頭辞の付いた名前でsecretを作成し、それをクラスターに関連付けてください。

Associate secrets page

Associate secrets dialog, enter secret ARN

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

Create secret, choose type and enter credentials

Create secret, set name with AmazonMSK_ prefix

セキュリティグループ(インバウンド)の更新

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回目のセキュリティグループ更新が必要です。

Security group inbound rules for ports 9096-9098

関連付けられたユーザーのACL認可を付与

MSKクラスターと同じVPC内のマシンから以下のコマンドを実行してください。Java JDKが必要なKafka CLIが必要です。

  1. AWS認証情報を設定。 認証情報が設定されていることを確認するために以下を実行してください:

    aws sts get-caller-identity

認証情報が設定されていない場合は、EC2インスタンスにIAMロールを追加するか、aws configureを実行してください。

  1. 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
  2. IAM認証ライブラリをダウンロードし、Kafka CLIのlibsディレクトリに配置します:

    aws-msk-iam-auth-1.1.9-all.jar
  3. IAMプライベートエンドポイントを取得する。 MSKコンソールで、View client informationをクリックし、IAMブートストラップサーバーエンドポイントをコピーします。

    View client information, IAM private endpoint

  4. 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

Successful ACL grant output


ステップ2: マルチVPC接続を有効にする

マルチVPC接続の有効化には約40分かかります。

MSKクラスターのNetworking設定で、Multi-VPC connectivityを有効にし、認証タイプとしてSASL/SCRAM authenticationを選択します。背景については、Amazon MSK multi-VPC private connectivity in a single Regionを参照してください。

Networking settings, enable multi-VPC connectivity

Enable multi-VPC, select SASL/SCRAM

注記

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を参照してください。

Edit cluster policy

Cluster policy with VeloDB 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クラスターのセキュリティグループにインバウンドルールを追加し、ポート14098-14100でのトラフィックを許可します。ソースとしてMSKクラスター自身のセキュリティグループを使用してください。VeloDB Cloudは異なるAWSアカウントからmulti-VPCプライベートエンドポイント経由で接続します。このアクセスはクロスアカウントのため、multi-VPCネットワークインターフェースはクラスターのセキュリティグループの下であなたのVPC内で動作するので、自己参照ルールによりトラフィックが許可されます。VeloDBのアカウントからセキュリティグループやCIDRを参照することはできません。これらのポートは、ステップ1で開いた同一VPCブローカーポートとは異なります。

ポート14098-14100のセキュリティグループインバウンドルール


ステップ5: VeloDB CloudをMSKに接続

AWS Consoleで:

  1. MSKクラスターに移動し、cluster ARNをコピーします。

    クラスターサマリーからcluster ARNをコピー

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

    ブートストラップサーバー、multi-VPCエンドポイントがハイライト表示

VeloDB Cloudで:

  1. Importに移動し、Add Import Jobをクリックします。Reverse Private Endpointを有効にし、Set up Connectionをクリックします。

    VeloDB Cloud、Amazon MSKのAdd Import Job

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

    Set up Connection、MSK cluster ARNを入力

  3. インポートジョブの詳細を入力します:

    • Brokers: ステップ2でコピーしたmulti-VPCブートストラップサーバーを貼り付け
    • Authentication: SASLを選択し、SASL/SCRAMのユーザー名とパスワードを入力し、SASL MechanismをSCRAM-SHA-512に設定

    完成したインポートジョブフォーム

  4. Nextをクリックして接続設定を完了します。VeloDB CloudはMSKクラスターへのプライベートエンドポイント(multi-VPC)を確立します。


ステップ6: MSKクラスターへのアクセス

接続が確立されると、MSKクラスターはReverse Private EndpointテーブルにAvailable接続ステータスで表示されます。

接続が確立され、MSKクラスターが利用可能

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