AWS PrivateLink
AWS PrivateLink is available in the Scale and Enterprise plans. To upgrade, visit the Plans page in the cloud console.
AWS PrivateLinkを使用すると、VPC、AWSサービス、オンプレミスシステム、ClickHouse Cloud間で、安全な接続を確立できます。これにより、トラフィックが公衆インターネットにさらされることはありません。本ドキュメントでは、AWS PrivateLinkを使用してClickHouse Cloudに接続する手順を概説します。
ClickHouse CloudサービスへのアクセスをAWS PrivateLinkアドレスを介してのみ制限するには、ClickHouse CloudのIPアクセスリストに記載された手順に従ってください。
ClickHouse Cloudは、現在クロスリージョンPrivateLinkのベータ版をサポートしています。
AWS PrivateLinkを有効にするには、次の手順を完了してください:
- エンドポイント「サービス名」を取得します。
- AWSエンドポイントを作成します。
- 「エンドポイントID」をClickHouse Cloud組織に追加します。
- 「エンドポイントID」をClickHouseサービスの許可リストに追加します。
Terraformの例はこちらでご確認いただけます。
注意
ClickHouseは、AWSリージョン内で同じ公開されたサービスエンドポイントを再利用するためにサービスをグループ化しようとします。ただし、このグループ化は保証されておらず、特に複数のClickHouse組織にサービスを分散させた場合は特にそうです。 既にClickHouse組織内の他のサービスに対してPrivateLinkが設定されている場合、そのグループ化のためにほとんどの手順をスキップし、最終手順「ClickHouseの「エンドポイントID」をClickHouseサービスの許可リストに追加」に直接進むことが可能です。
前提条件
始める前に、必要なものは次のとおりです:
- あなたのAWSアカウント。
- ClickHouse APIキーで、ClickHouse側でプライベートエンドポイントを作成および管理するために必要な権限を持っていること。
手順
AWS PrivateLinkを介してClickHouse Cloudサービスに接続するための手順は以下の通りです。
エンドポイント「サービス名」を取得
オプション1: ClickHouse Cloudコンソール
ClickHouse Cloudコンソールで、PrivateLinkを介して接続したいサービスを開き、次に設定メニューに移動します。

サービス名
とDNS名
をメモし、次のステップに移動します。
オプション2: API
まず、以下の環境変数を設定してからコマンドを実行してください:
地域、プロバイダー、およびサービス名でフィルタリングしてClickHouseのINSTANCE_ID
を取得します:
プライベートリンク構成のためにendpointServiceId
とprivateDnsHostname
を取得します:
このコマンドは以下のような結果を返すはずです:
endpointServiceId
とprivateDnsHostname
をメモし、次のステップに移動します。
AWSエンドポイントの作成
このセクションでは、AWS PrivateLinkを介してClickHouseを構成するためのClickHouse固有の詳細を説明します。AWS固有の手順は、参照として提供されていますが、時間が経つにつれて予告なしに変更される可能性があります。特定のユースケースに基づいてAWS構成を検討してください。
ClickHouseは、必要なAWS VPCエンドポイント、セキュリティグループのルール、またはDNSレコードの設定に対して責任を負わないことに注意してください。
以前にPrivateLinkの設定中に「プライベートDNS名」を有効にしており、新しいサービスをPrivateLink経由で構成する際に問題が発生した場合は、ClickHouseサポートにお問い合わせください。他のAWSの設定作業に関する問題については、直接AWSサポートに連絡してください。
オプション1: AWSコンソール
AWSコンソールを開き、VPC → エンドポイント → エンドポイントを作成に移動します。
NLBおよびGWLBを使用するエンドポイントサービスを選択し、エンドポイント「サービス名」ステップで取得したサービス名
コンソールまたはendpointServiceId
APIをサービス名フィールドに入力します。サービスの確認をクリックします:

PrivateLinkを介してクロスリージョン接続を確立したい場合は、「クロスリージョンエンドポイント」のチェックボックスを有効にし、サービスリージョンを指定します。サービスリージョンはClickHouseインスタンスが稼働している場所です。
「サービス名を確認できませんでした。」というエラーメッセージが表示された場合は、新しいリージョンをサポートされているリージョンリストに追加するようカスタマーサポートにお問い合わせください。
次に、VPCとサブネットを選択します:

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

オプション2: AWS CloudFormation
次に、エンドポイント「サービス名」ステップで取得したサービス名
コンソールまたはendpointServiceId
APIを使用してVPCエンドポイントを作成する必要があります。正しいサブネットID、セキュリティグループ、およびVPC IDを使用してください。
VPCエンドポイントを作成した後、エンドポイントID
の値をメモします。次のステップで必要になります。
オプション3: Terraform
以下のservice_name
は、エンドポイント「サービス名」ステップで取得したサービス名
コンソールまたはendpointServiceId
APIです。
VPCエンドポイントを作成した後、エンドポイントID
の値をメモします。次のステップで必要になります。
エンドポイントのプライベートDNS名を設定
DNSを設定する方法は多岐にわたります。特定のユースケースに応じてDNSを設定してください。
エンドポイント「サービス名」ステップから取得した「DNS名」をAWSエンドポイントネットワークインターフェースにポイントする必要があります。これにより、VPC/ネットワーク内のサービス/コンポーネントが正しくそれを解決できるようになります。
「エンドポイントID」をClickHouseサービスの許可リストに追加
オプション1: ClickHouse Cloudコンソール
追加するには、ClickHouse Cloudコンソールに移動し、PrivateLink経由で接続したいサービスを開いて、次に設定に移動します。プライベートエンドポイントを設定をクリックして、プライベートエンドポイント設定を開きます。Create AWS Endpointステップで取得したエンドポイントID
を入力します。「エンドポイントを作成」をクリックします。
既存のPrivateLink接続からのアクセスを許可したい場合は、既存のエンドポイントドロップダウンメニューを使用してください。

削除するには、ClickHouse Cloudコンソールに移動し、サービスを見つけ、そのサービスの設定に移動して、削除したいエンドポイントを見つけます。エンドポイントのリストから削除します。
オプション2: API
プライベートリンクを使用して利用可能にする必要がある各インスタンスにエンドポイントIDを許可リストに追加する必要があります。
Create AWS Endpointステップからのデータを使用して、ENDPOINT_ID
環境変数を設定します。
コマンドを実行する前に、以下の環境変数を設定してください:
エンドポイントIDを許可リストに追加するには:
エンドポイントIDを許可リストから削除するには:
PrivateLinkを使用してインスタンスにアクセスする
Private Linkが有効になっている各サービスには、パブリックおよびプライベートエンドポイントがあります。Private Linkを使用して接続するには、エンドポイント「サービス名」を取得から取得したprivateDnsHostname
APIまたはDNS名
コンソールであるプライベートエンドポイントを使用する必要があります。
プライベートDNSホスト名を取得する
オプション1: ClickHouse Cloudコンソール
ClickHouse Cloudコンソールで、設定に移動します。プライベートエンドポイントを設定ボタンをクリックします。開いたフライアウトで、DNS名をコピーします。

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