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

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

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シークレットを関連付ける

MSKはSecrets Managerを使用してSASL/SCRAM認証情報を保存します。クラスター作成時または作成後にシークレットを関連付けます。

要件:

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

既存のシークレットがない場合は、AmazonMSK_のプレフィックスが付いた名前でAWS Secrets Managerにシークレットを作成し、クラスターに関連付けます。

Associate secrets page

Associate secrets dialog, enter secret ARN

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

Create secret, choose type and enter credentials

Create secret, set name with AmazonMSK_ prefix

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

MSKクラスターのセキュリティグループで、VeloDB Cloud BYOCのVPC CIDRからポート9096-9098(SASL/SCRAMおよびTLSブローカーポート)のトラフィックを許可するインバウンドルールを追加します。これらのポートは、次のステップのIAMベースACL付与で使用され、同じVPC内から実行されます。

注記

ステップ4では、VeloDB CloudのマルチVPCプライベート接続用にポート14098-14100を開くため、2回目のセキュリティグループ更新が必要です。

Security group inbound rules for ports 9096-9098

関連付けられたユーザーにACL認可を付与する

MSKクラスターと同じVPC内のマシンから以下のコマンドを実行します。Kafka CLI(Java JDKが必要)が必要です。

  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を選択します。

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に置き換えてください。

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 クラスターのセキュリティグループにインバウンドルールを追加して、VeloDB Cloud BYOC VPC CIDR からポート 14098-14100 へのトラフィックを許可します。これらのポートは、VeloDB Cloud がマルチ VPC プライベートエンドポイント経由で接続するために使用されます(ステップ 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) ブートストラップサーバーをコピーします。次のステップで必要になります。

    ブートストラップサーバー、マルチ 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 でコピーしたマルチ VPC ブートストラップサーバーを貼り付け
    • Authentication: SASL を選択し、SASL/SCRAM のユーザー名とパスワードを入力し、SASL Mechanism を SCRAM-SHA-512 に設定

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

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


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

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

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

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