エンドポイントを介してリージョン Google API にアクセスする
このドキュメントでは、Private Service Connect エンドポイントを使用して、サポートされている Google API のリージョン エンドポイントに接続する方法について説明します。
他の Private Service Connect 構成については、Private Service Connect をご覧ください。
ロール
リージョン Private Service Connect エンドポイントの作成に必要な権限を取得するには、VPC ネットワークに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
Compute ネットワーク管理者のロール(
roles/compute.networkAdmin
) - DNS 管理者のロール(
roles/dns.admin
)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
始める前に
Install the Google Cloud CLI, then initialize it by running the following command:
$ gcloud init
Enable the Compute Engine, Network Connectivity Center, Cloud DNS, and Service Directory APIs.
Google Cloud コンソールの [API とサービス] ページで、Private Service Connect エンドポイントを介してアクセスする Google API を有効にします。Private Service Connect では、API は自動的に有効になりません。
下り(外向き)ファイアウォール ルールでエンドポイントへのトラフィックが許可されていることを確認します。VPC ネットワークのデフォルトのファイアウォール構成には暗黙の下り(外向き)許可ルールが含まれ、このトラフィックが許可されます。トラフィックをブロックする優先度の高い下り(外向き)ルールがないことを確認します。
制限事項を確認します。
リージョン Private Service Connect エンドポイントを作成する
リージョン Private Service Connect エンドポイントを作成して、ターゲット Google API のリージョン エンドポイントにリクエストを送信できます。
サポートされているリージョン エンドポイントの一覧については、リージョン サービス エンドポイントをご覧ください。
リージョン エンドポイントのホスト名には、次の 2 つの形式があります。
- 公開ホスト名:
SERVICE.REGION.rep.DOMAIN
非公開ホスト名:
SERVICE.REGION.p.rep.DOMAIN
非公開ホスト名では、
REGION
とrep
の間にp
サブドメインを追加します。
ターゲット Google API を構成するときに、非公開形式のホスト名を指定します(例: spanner.me-central2.p.rep.googleapis.com
)。エンドポイントを作成したら、同じ限定公開のリージョン エンドポイントのホスト名を使用して、エンドポイントの限定公開 DNS レコードを作成します。
Private Service Connect エンドポイントは任意の名前で構成できますが、メンテナンスを容易にするため、ターゲット Google API のサービス名を使用することをおすすめします。これにより、DNS 名がエンドポイント名と一致します。たとえば、エンドポイントのターゲットが spanner.me-central2.p.rep.googleapis.com
の場合は、エンドポイント名として spanner
を使用します。
gcloud
gcloud network-connectivity regional-endpoints create
コマンドを使用します。
gcloud network-connectivity regional-endpoints create ENDPOINT_NAME \ --region=REGION \ --network=NETWORK_URI \ --subnetwork=SUBNET_URI \ --target-google-api=REP_NAME
エンドポイントを他のリージョンのリソースで使用できるようにするには、--enable-global-access
フラグを追加します。
次のように置き換えます。
ENDPOINT_NAME
: エンドポイントの名前。REGION
: エンドポイントを作成するリージョン。NETWORK_URI
: エンドポイントprojects/PROJECT_ID/global/networks/NETWORK_NAME
の VPC ネットワークの URI。SUBNET_URI
: エンドポイントを接続するサブネットの URI:projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
。REP_NAME
: 接続するリージョン サービス エンドポイントの名前。例:spanner.me-central2.p.rep.googleapis.com
エンドポイントを一覧取得する
構成したエンドポイントの一覧を取得できます。
コンソール
Google Cloud コンソールで [Private Service Connect] ページに移動します。
[接続エンドポイント] タブをクリックします。
リージョン エンドポイント ターゲットを含むすべてのエンドポイントが表示されます。
gcloud
gcloud network-connectivity regional-endpoints list
コマンドを使用します。
gcloud network-connectivity regional-endpoints list \ --region=REGION
REGION
は、一覧取得するエンドポイントのリージョンに置き換えます。
エンドポイントが機能していることを確認する
エンドポイントが構成されている VPC ネットワークとリージョンに仮想マシン(VM)インスタンスを作成します。VM で次のコマンドを実行して、Private Service Connect エンドポイントが機能していることを確認します。エンドポイントは ping(ICMP)リクエストに応答しません。
curl --connect-to SERVICE.REGION.p.rep.DOMAIN:443:ENDPOINT_IP:443 \ 'SERVICE.REGION.p.rep.DOMAIN/PATH'
次のように置き換えます。
SERVICE
: エンドポイントが指しているサービス。たとえば、spanner
やlogging
です。REGION
: エンドポイントのリージョン。DOMAIN
: サービスのドメイン。例:googleapis.com
ENDPOINT_IP
: エンドポイントの IP アドレス。PATH
: このサービスによって提供されるリソースへのパス。たとえば、多くのサービスでは、パス$discovery/rest?version=v1
のディスカバリ ドキュメントが提供されています。
次のリクエストの例では、IP アドレス 192.168.1.100
のエンドポイントが me-central2
のリージョン エンドポイントから Cloud Spanner API ディスカバリ ドキュメントをリクエストできるかどうかをテストします。
curl --connect-to spanner.me-central2.p.rep.googleapis.com:443:192.168.1.100:443 \ 'https://spanner.me-central2.p.rep.googleapis.com/$discovery/rest?version=v1'
エンドポイントの限定公開 DNS エントリを作成する
エンドポイントの DNS エントリは SERVICE.REGION.p.rep.DOMAIN
の形式で作成する必要があります。Cloud DNS を使用して DNS エントリを作成できます。
REGION.p.rep.DOMAIN
形式の限定公開 DNS ゾーンを作成します。たとえば、
googleapis.com
ドメインのリージョン エンドポイントを使用する場合は、リージョンme-central2
にme-central2.p.rep.googleapis.com
という名前の限定公開 DNS ゾーンを作成します。エンドポイントに割り当てられた IP アドレスを参照する DNS レコードを作成します。ホスト名はサービス名
SERVICE
と一致する必要があります。たとえば、spanner
やlogging
はサービス名です。
たとえば、エンドポイントがターゲット spanner.me-central2.p.rep.googleapis.com
で構成されている場合、me-central2.p.rep.googleapis.com
という限定公開 DNS ゾーンと、エンドポイントの IP アドレスを参照する spanner
という A レコードを作成します。エンドポイントの完全修飾ドメイン名は spanner.me-central2.p.rep.googleapis.com
です。
非公開のエンドポイント名を使用するようにクライアントを構成する
公開 DNS 名ではなく限定公開 DNS 名を使用するようにクライアントを構成する必要があります。カスタム エンドポイントを使用するように構成する方法については、クライアントまたはクライアント ライブラリのドキュメントをご覧ください。次に例を示します。
Python: Client options で
api_endpoint
を構成できます。Go: ClientOptions で
WithEndpoint
を構成できます。.NET: クライアントのビルダークラスで
Endpoint
を構成できます。gcloud: gcloud CLI で
api_endpoint_overrides
を構成できます。
エンドポイントに関する詳細情報を取得する
エンドポイントの構成の詳細を表示できます。
gcloud
gcloud network-connectivity regional-endpoints describe
コマンドを使用します。
gcloud network-connectivity regional-endpoints describe \ ENDPOINT_NAME --region=REGION
次のように置き換えます。
ENDPOINT_NAME
: エンドポイントの名前。REGION
: エンドポイントのリージョン。
エンドポイントを削除する
エンドポイントを削除できます。
gcloud
gcloud network-connectivity regional-endpoints delete
コマンドを使用します。
gcloud network-connectivity regional-endpoints delete \ ENDPOINT_NAME --region=REGION
次のように置き換えます。
ENDPOINT_NAME
: エンドポイントの名前。REGION
: エンドポイントのリージョン。
ハイブリッド ネットワークからエンドポイントにアクセスする
Cloud Interconnect または Cloud VPN トンネル用の VLAN アタッチメントを使用して Google Cloud に接続しているネットワーク上のクライアントは、Private Service Connect エンドポイントにアクセスできます。VLAN アタッチメントまたは Cloud VPN トンネルは、エンドポイントと同じ VPC ネットワーク(または共有 VPC ネットワーク)で終端する必要があります。ピアリングされた VPC ネットワーク内のクライアントはエンドポイントに到達できません。
グローバル アクセスが構成されている場合、VLAN アタッチメントまたは Cloud VPN トンネルからのクライアント トラフィックは、別のリージョンのエンドポイントに到達できます。
VLAN アタッチメントでは、Dataplane v1 と Dataplane v2 の両方がサポートされています。Dataplane のバージョンの詳細については、Dataplane v2 をご覧ください。
相手側のネットワークのシステムを構成して、限定公開 DNS ゾーンにクエリを実行できるようにする必要があります。
Cloud DNS を使用して限定公開 DNS ゾーンを実装した場合は、次の手順を完了します。
他のネットワークが接続する VPC ネットワークにインバウンド サーバー ポリシーを作成します。
他のネットワークが接続する VPC ネットワークで、VLAN アタッチメントまたは Cloud VPN トンネルが配置されているリージョンのインバウンド フォワーダー エントリ ポイントを特定します。
VPC ネットワークに接続する VLAN アタッチメントまたは Cloud VPN トンネルと同じリージョン内のインバウンド フォワーダーのエントリ ポイントにエンドポイントの DNS 名を転送するように、他のネットワークのシステムと DNS ネームサーバーを構成します。