AWS PrivateLink
AWS PrivateLink is available in the Scale and Enterprise plans. To upgrade, visit the Plans page in the cloud console.
Please note AWS PrivateLinkは、VPC間、AWSサービス、オンプレミスシステム、およびClickHouse Cloud間の接続を提供し、インターネットを介さずにトラフィックを管理します。この文書では、AWS PrivateLinkを使用してClickHouse Cloudに接続する方法を説明します。 AWS PrivateLink以外のアドレスからClickHouse Cloudサービスへのアクセスを無効にするには、ClickHouse CloudのIPアクセスリストを使用します。
ClickHouse Cloudは現在、クロスリージョンPrivateLinkをサポートしていません。ただし、VPCピアリングを使用してPrivateLinkに接続することができます。詳細および設定ガイダンスについては、AWSの文書を参照してください。
AWS PrivateLinkを有効にするには、次の手順を完了してください:
- エンドポイントサービス名を取得します。
- サービスエンドポイントを作成します。
- ClickHouse Cloud組織にエンドポイントIDを追加します。
- サービスの許可リストにエンドポイントIDを追加します。
AWS PrivateLinkの完全なTerraformの例は、こちらでご覧いただけます。
前提条件
始める前に必要なもの:
- AWSアカウント。
- プライベートリンクを作成および管理するために必要な権限を持つAPIキー。
手順
ClickHouse CloudをAWS PrivateLinkに接続するための手順は次のとおりです。
エンドポイントサービス名を取得する
オプション 1: ClickHouse Cloudコンソール
ClickHouse Cloudコンソールで、PrivateLink経由で接続したいサービスを開き、設定メニューを開きます。 プライベートエンドポイントの設定ボタンをクリックします。PrivateLinkの設定に使用されるサービス名をコピーします。

オプション 2: API
まず、コマンドを実行する前に、次の環境変数を設定します:
地域、プロバイダ、およびサービス名でフィルタリングして、目的のインスタンスIDを取得します:
プライベートリンク設定のためのAWSサービス名を取得します:
このコマンドは次のような結果を返します:
endpointServiceId
をメモし、ステップ2に移動してください。
サービスエンドポイントを作成する
次に、前のステップで取得したendpointServiceId
を使用してサービスエンドポイントを作成する必要があります。
オプション 1: AWSコンソール
AWSコンソールを開き、VPC → エンドポイント → エンドポイントの作成に移動します。
その他のエンドポイントサービスを選択し、前のステップで取得したendpointServiceId
を使用します。完了したら、サービスを確認をクリックします:

次に、VPCおよびサブネットを選択します:

オプションのステップとして、セキュリティグループやタグを割り当てます:
セキュリティグループ内でポート8443
および9440
が許可されていることを確認してください。
VPCエンドポイントを作成した後、Endpoint ID
の値をメモしておいてください。次のステップで必要になります。

オプション 2: AWS CloudFormation
正しいサブネットID、セキュリティグループ、VPC IDを使用していることを確認してください。
オプション 3: Terraform
エンドポイントのプライベートDNS名を変更する
このステップでは、プライベートDNSゾーン<region code>.vpce.aws.clickhouse.cloud
の設定をAWS VPCに注入します。
独自のDNSリゾルバを使用している場合は、<region code>.vpce.aws.clickhouse.cloud
のDNSゾーンを作成し、ワイルドカードレコード*.<region code>.vpce.aws.clickhouse.cloud
をエンドポイントIDのIPアドレスに向けます。
オプション 1: AWSコンソール
VPCエンドポイントに移動し、VPCエンドポイントを右クリックして、プライベートDNS名を変更を選択します:

開いたページで、プライベートDNS名を有効にするを選択します:

オプション 2: AWS CloudFormation
CloudFormation
テンプレートを更新し、PrivateDnsEnabled
をtrue
に設定します:
変更を適用します。
オプション 3: Terraform
- Terraformコード内の
aws_vpc_endpoint
リソースを変更し、private_dns_enabled
をtrue
に設定します:
変更を適用します。
ClickHouse Cloud組織にエンドポイントIDを追加する
オプション 1: ClickHouse Cloudコンソール
組織にエンドポイントを追加するには、サービスの許可リストにエンドポイントIDを追加するステップに進みます。ClickHouse Cloudコンソールを使用してEndpoint ID
をサービスの許可リストに追加すると、自動的に組織に追加されます。
エンドポイントを削除するには、組織の詳細 -> プライベートエンドポイントを開き、削除ボタンをクリックしてエンドポイントを削除します。

オプション 2: API
コマンドを実行する前に、次の環境変数を設定します:
前のステップのデータを使用してVPC_ENDPOINT
環境変数を設定します。
エンドポイントを追加するには、次のコマンドを実行します:
エンドポイントを削除するには、次のコマンドを実行します:
サービスの許可リストにエンドポイントIDを追加する
オプション 1: ClickHouse Cloudコンソール
ClickHouse Cloudコンソールで、PrivateLink経由で接続したいサービスを開き、設定に移動します。前のステップから取得したEndpoint ID
を入力します。
既存のPrivateLink接続からのアクセスを許可したい場合は、既存のエンドポイントドロップダウンメニューを使用してください。

オプション 2: API
プライベートリンクを使用可能にするインスタンスごとに、エンドポイントIDを許可リストに追加する必要があります。
コマンドを実行する前に、次の環境変数を設定します:
許可リストにエンドポイントIDを追加するには:
許可リストからエンドポイントIDを削除するには:
PrivateLinkを使用してインスタンスにアクセスする
プライベートリンクフィルターが設定された各インスタンスには、パブリックとプライベートのエンドポイントがあります。PrivateLinkを使用してサービスに接続するには、プライベートエンドポイントprivateDnsHostname
を使用する必要があります。
プライベートDNSホスト名は、AWS VPCからのみ利用可能です。ローカルマシンからDNSホストを解決しようとしないでください。
プライベートDNSホスト名を取得する
オプション 1: ClickHouse Cloudコンソール
ClickHouse Cloudコンソールで、設定に移動します。 プライベートエンドポイントの設定ボタンをクリックします。開いたフライアウトで、DNS名をコピーします。

オプション 2: API
コマンドを実行する前に、次の環境変数を設定します:
これにより、次のような出力が得られます:
この例では、xxxxxxx.yy-xxxx-N.vpce.aws.clickhouse.cloud
のホスト名への接続はPrivateLinkにルーティングされますが、xxxxxxx.yy-xxxx-N.aws.clickhouse.cloud
はインターネット経由でルーティングされます。
トラブルシューティング
1つのリージョンに複数のPrivateLinkがある
ほとんどの場合、各VPCに対して1つのエンドポイントサービスを作成する必要があります。このエンドポイントは、VPCから複数のClickHouse Cloudサービスへのリクエストをルーティングできます。
プライベートエンドポイントへの接続がタイムアウトした
- VPCエンドポイントにセキュリティグループをアタッチしてください。
- エンドポイントにアタッチされているセキュリティグループの
inbound
ルールを確認し、ClickHouseポートを許可してください。 - 接続性テストに使用されるVMにアタッチされているセキュリティグループの
outbound
ルールを確認し、ClickHouseポートへの接続を許可してください。
プライベートホスト名: ホストのアドレスが見つかりません
- "プライベートDNS名"オプションが有効になっていることを確認してください。詳細については、ステップを参照してください。
ピアによって接続がリセットされました
- おそらくエンドポイントIDがサービスの許可リストに追加されていないためです。ステップを参照してください。
エンドポイントフィルターの確認
コマンドを実行する前に、次の環境変数を設定します:
リモートデータベースに接続する
例えば、ClickHouse CloudでMySQLまたはPostgreSQLテーブル関数を使用して、Amazon Web Services (AWS) VPCにホストされたデータベースに接続しようとしているとします。AWS PrivateLinkは、この接続を安全に有効にするためには使用できません。PrivateLinkは一方向の接続です。内部ネットワークやAmazon VPCがClickHouse Cloudに安全に接続できるようにしますが、ClickHouse Cloudが内部ネットワークに接続することはできません。
AWS PrivateLinkの文書によると:
AWS PrivateLinkは、クライアント/サーバーのセットアップがあり、1つ以上の消費者VPCが特定のサービスまたはサービスプロバイダVPC内のインスタンスセットへの一方向のアクセスを許可する場合に使用します。消費者VPC内のクライアントのみが、サービスプロバイダVPC内のサービスへの接続を開始できます。
これを実現するには、AWSセキュリティグループを設定し、ClickHouse Cloudから内部/プライベートデータベースサービスへの接続を許可する必要があります。ClickHouse CloudリージョンのデフォルトのエグレスIPアドレスや利用可能な静的IPアドレスを確認してください。