このページでは、Private Service Connect を使用して Cloud SQL インスタンスに接続する方法について説明します。
Private Service Connect を使用すると、異なるグループ、チーム、プロジェクト、組織に属する複数の Virtual Private Cloud(VPC)ネットワークから、プライマリ Cloud SQL インスタンスまたはそのリードレプリカのいずれかに接続できます。
始める前に
Cloud SQL インスタンスでの Private Service Connect の使用のサポートは、gcloud CLI
バージョン 416.0.0 以降で利用できます。
ユーザーロール
次の表に、Cloud SQL インスタンスで Private Service Connect を使用するために必要なロールを示します。
ロール | 説明 |
---|---|
compute.networkAdmin |
Cloud SQL インスタンスへの接続を開始する VPC ネットワークを完全に制御できる権限を付与します。IP アドレス、ファイアウォール ルール、サービス接続ポリシー、Private Service Connect エンドポイントを作成して管理できます。 Private Service Connect を使用して複数の VPC ネットワークから Cloud SQL インスタンスに接続する場合、各ネットワークには独自の管理者が存在します。 |
dns.admin |
DNS ゾーンやレコードなど、Cloud DNS リソースに対する完全な制御権を付与します。 |
cloudsql.admin |
Cloud SQL インスタンスを完全に制御し、インスタンスのライフサイクルを制御します。 |
cloudsql.instanceUser |
Cloud SQL インスタンスへのアクセスを提供します。Cloud SQL Auth Proxy クライアントを介して接続する場合は、Cloud SQL クライアントのロールが必要です。直接接続する場合、Identity and Access Management(IAM)のロールと権限は必要ありません。 |
Private Service Connect エンドポイントを作成する
Private Service Connect エンドポイントは、コンシューマー VPC ネットワーク内の内部 IP アドレスであり、そのネットワーク内のクライアントが直接アクセスできます。クライアントはこれらのエンドポイントを使用して Cloud SQL インスタンスに接続できます。
VPC 内の Private Service Connect エンドポイントを Cloud SQL に自動作成させることも、手動でエンドポイントを作成することもできます。
Cloud SQL に Private Service Connect エンドポイントを自動作成させるには、次の操作を行います。
- VPC ネットワーク内のサービス接続ポリシーを作成します。このポリシーを使用して、Private Service Connect エンドポイントを自動的にプロビジョニングできます。
- Cloud SQL インスタンスを作成し、そのインスタンスに対して Private Service Connect を有効にしてから、Private Service Connect エンドポイントを自動的に作成するようにインスタンスを構成します。
- インスタンスのエンドポイントを取得します。これにより、そのエンドポイントを使用してインスタンスに接続できます。
Private Service Connect エンドポイントを手動で作成するには、次の操作を行います。
- Cloud SQL インスタンスを作成し、そのインスタンスに対して Private Service Connect を有効にします。
- サービス アタッチメントの URI を取得します。この URI は、Private Service Connect エンドポイントを作成するときに使用します。
- Private Service Connect エンドポイントの内部 IP アドレスを予約し、そのアドレスを割り当てたエンドポイントを作成します。
エンドポイントを自動的に作成する
以降のセクションでは、Cloud SQL に Private Service Connect エンドポイントを自動作成させるようにインスタンスを構成する方法について説明します。
サービス接続ポリシーを作成する
サービス接続ポリシーを使用すると、指定したサービスクラスに、コンシューマー VPC ネットワークに Private Service Connect エンドポイントの作成を許可できます。サービス接続ポリシーを使用して、Cloud SQL に Private Service Connect エンドポイントを自動作成させることができます。
サービス接続ポリシーを作成するには、Google Cloud コンソール、gcloud CLI、または API を使用できます。
Google Cloud コンソールで [Private Service Connect] ページに移動します。
[CONNECTION POLICIES] タブをクリックします。
[Create connection policy] をクリックします。
接続ポリシーの名前を入力します。
次の手順でサービスクラスを指定します。
- [Source service class] で [Google サービス] を選択します。
- 接続ポリシーのマネージド サービスは Cloud SQL であるため、[サービスクラス] メニューから
google-cloud-sql
を選択します。
[ターゲット エンドポイントのスコープ] セクションで、このポリシーを適用するネットワークとリージョンを選択します。
[ポリシー] セクションの [サブネットワーク] メニューから 1 つ以上のサブネットを選択します。サブネットは、エンドポイントの IP アドレスを割り振るために使用されます。
省略可: ポリシーの接続上限を指定します。上限により、この接続ポリシーを使用して作成できるエンドポイントの数が決まります。接続上限を指定しない場合は、無制限になります。
[ポリシーを作成] をクリックします。
サービス接続ポリシーを作成するには、service-connection-policies create
コマンドを使用します。
gcloud network-connectivity service-connection-policies createPOLICY_NAME \ --network=NETWORK \ --project=PROJECT_ID \ --region=REGION \ --service-class=SERVICE_CLASS \ --subnets=https://www.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION /subnetworks/SUBNETS \ --psc-connection-limit=LIMIT \ --description=DESCRIPTION \ --producer-instance-location=PRODUCER_INSTANCE_LOCATION \ --allowed-google-producers-resource-hierarchy-level=RESOURCE_HIERARCHY_LEVEL
次のように置き換えます。
POLICY_NAME
: サービス接続ポリシーの名前。NETWORK
: このポリシーを適用するネットワーク。PROJECT_ID
: VPC ネットワークのプロジェクトのプロジェクト ID または番号。共有 VPC ネットワークの場合、サービス接続ポリシーはサービス プロジェクトではサポートされないため、ホスト プロジェクトにサービス接続ポリシーをデプロイする必要があります。REGION
: このポリシーが適用されるリージョン。サービスの接続を自動化するすべてのリージョンに同じポリシーが必要です。SERVICE_CLASS
: プロデューサーが提供するサービスクラスのリソース識別子。Cloud SQL の場合、サービスクラスはgoogle-cloud-sql
です。SUBNETS
: Private Service Connect エンドポイントの IP アドレスを割り振るために使用される 1 つ以上の通常のコンシューマー サブネット。これらの IP アドレスは自動的に割り振られ、マネージド サービス インスタンスの作成と削除に応じてサブネットのプールに返されます。サブネットは、サービス接続ポリシーと同じリージョンに存在する必要があります。複数の接続ポリシーが同じリージョンを共有している場合は、これらのポリシーで同じサブネットワークを再利用できます。複数のサブネットを入力する場合は、カンマ区切りリストで指定します。LIMIT
: このポリシーを使用して作成できるエンドポイントの最大数。上限を指定しない場合は、無制限になります。DESCRIPTION
: サービス接続ポリシーの説明(省略可)。PRODUCER_INSTANCE_LOCATION
: このオプション フラグを使用して、Cloud SQL インスタンスに対してロケーションのカスタム階層を承認するかどうかを指定します。PRODUCER_INSTANCE_LOCATION
の値は、次のいずれか 1 つにのみ設定できます。custom-resource-hierarchy-levels
:allowed-google-producers-resource-hierarchy-level
パラメータの値として指定したプロジェクト、フォルダ、または組織のいずれかにインスタンスが配置される必要があります。none
: インスタンスはサービス接続ポリシーと同じプロジェクト内に配置されます。
RESOURCE_HIERARCHY_LEVEL
: インスタンスを配置するプロジェクト、フォルダ、または組織のリスト。このリストはprojects/PROJECT_ID
、folders/FOLDER_ID
、またはorganizations/ORGANIZATION_ID
の形式です。
たとえば、次のコマンドは、managed-services
サブネットから IP アドレスを割り振る
google-cloud-sql
サービスクラスのサービス接続ポリシーを作成します。このポリシーを使用して、最大 10 個の Private Service Connect エンドポイントを作成できます。エンドポイントは、マネージド サービス インスタンスと同じ組織のプロジェクト内に作成する必要があります。Cloud SQL インスタンスは myproject
プロジェクトに配置されます。
gcloud network-connectivity service-connection-policies create cloud-sql-policy \ --network=default \ --project=my-project \ --region=us-central1 \ --service-class=google-cloud-sql \ --subnets=managed-service-subnet \ --psc-connection-limit=10 \ --producer-instance-location=custom-resource-hierarchy-levels \ --allowed-google-producers-resource-hierarchy-level=projects/myproject
リクエストのデータを使用する前に、次のように置き換えます。
: オブジェクトの ID。PROJECT_ID
: サービス接続ポリシーのリージョン。REGION
: サービス接続ポリシーの名前。POLICY_NAME
: サービス接続ポリシーの説明(省略可)。DESCRIPTION
: サービス接続ポリシーのネットワーク。NETWORK
: このポリシーを使用して作成できるエンドポイントの最大数。上限を指定しない場合は、無制限になります。LIMIT
: Private Service Connect エンドポイントの IP アドレスを割り振るために使用される 1 つ以上の通常のコンシューマー サブネット。これらの IP アドレスは自動的に割り振られ、マネージド サービス インスタンスの作成と削除に応じてサブネットのプールに返されます。サブネットは、サービス接続ポリシーと同じリージョンに存在する必要があります。複数の接続ポリシーが同じリージョンを共有している場合は、これらのポリシーで同じサブネットワークを再利用できます。複数のサブネットを入力する場合は、カンマ区切りリストで指定します。SUBNETS
: プロデューサーが提供するサービスクラスのリソース識別子。SERVICE_CLASS
HTTP メソッドと URL:
POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID /locations/REGION /serviceConnectionPolicies?serviceConnectionPolicyId=POLICY_NAME
リクエストの本文(JSON):
{ "description": "DESCRIPTION ", "network": "projects/PROJECT_ID /global/networks/NETWORK ", "pscConfig": { "limit": "LIMIT ", "subnetworks": [ "projects/PROJECT_ID /regions/REGION /subnetworks/SUBNET " ] }, "serviceClass": "SERVICE_CLASS " }
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID /locations/REGION /serviceConnectionPolicies?serviceConnectionPolicyId=POLICY_NAME "
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID /locations/REGION /serviceConnectionPolicies?serviceConnectionPolicyId=POLICY_NAME " | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_ID /locations/REGION /operations/OPERATION_ID ", "metadata": { "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata", "createTime": "2023-08-15T16:59:29.236110917Z", "target": "projects/PROJECT_ID /locations/REGION /serviceConnectionPolicies/POLICY_NAME ", "verb": "create", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
Cloud SQL インスタンスを作成する
インスタンスを作成し、そのインスタンスに対して Private Service Connect を有効にしてから、エンドポイントを自動的に作成するようにインスタンスを構成するには、gcloud CLI または API を使用できます。
インスタンスを作成し、そのインスタンスに対して Private Service Connect を有効にするには、gcloud sql instances create
コマンドを使用します。
gcloud sql instances createINSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --availability-type=AVAILABILITY_TYPE \ --no-assign-ip \ --tier=MACHINE_TYPE \ --database-version=DATABASE_VERSION \ --psc-auto-connections=network=CONSUMER_NETWORK ,project=CONSUMER_PROJECT
次のように置き換えます。
- INSTANCE_NAME: インスタンスの名前。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。
- REGION_NAME: インスタンスのリージョン名。
ALLOWED_PROJECTS: Private Service Connect エンドポイントに Cloud SQL インスタンスへの接続を許可するプロジェクトの ID またはプロジェクト番号のカンマ区切りリスト。
プロジェクトがこのリストに含まれていない場合、そのプロジェクトではインスタンスに接続するための Private Service Connect エンドポイントを作成できません。
- AVAILABILITY_TYPE: インスタンスの高可用性を有効にします。このパラメータには、次のいずれかの値を指定します。
REGIONAL
: 高可用性を有効にします。本番環境インスタンスに推奨されます。インスタンスは、選択したリージョン内の別のゾーンにフェイルオーバーします。ZONAL
: フェイルオーバー機能を提供しません。これがデフォルト値です。
インスタンスの高可用性の設定と削除の詳細については、高可用性向けに既存のインスタンスを構成するとインスタンスの高可用性を無効にするをご覧ください。
- MACHINE_TYPE: インスタンスのマシンタイプ。
- DATABASE_VERSION: インスタンスのデータベース バージョン(例:
POSTGRES_13
)。 - CONSUMER_NETWORK: Private Service Connect エンドポイントを作成する場所とする VPC ネットワークのパス。例:
projects/my-host-project/global/networks/default
。 CONSUMER_PROJECT: 作成する Private Service Connect エンドポイントを配置するプロジェクト。共有 VPC ネットワークを使用している場合は、ホスト プロジェクトまたはサービス プロジェクトのいずれかになります。
自動接続パラメータで指定したプロジェクトは、許可されたプロジェクトに自動的に追加されます。必要に応じて、Private Service Connect エンドポイントを手動で作成して配置するプロジェクトを、許可されたプロジェクトのリストに追加できます。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。
- INSTANCE_NAME: インスタンスの名前。
- REGION_NAME: インスタンスのリージョン名。
- AVAILABILITY_TYPE: インスタンスの高可用性を有効にします。このパラメータには、次のいずれかの値を指定します。
REGIONAL
: 高可用性を有効にします。本番環境インスタンスに推奨されます。インスタンスは、選択したリージョン内の別のゾーンにフェイルオーバーします。ZONAL
: フェイルオーバー機能を提供しません。これがデフォルト値です。
インスタンスの高可用性の設定と削除の詳細については、高可用性向けに既存のインスタンスを構成するとインスタンスの高可用性を無効にするをご覧ください。
ALLOWED_PROJECTS: Private Service Connect エンドポイントに Cloud SQL インスタンスへの接続を許可するプロジェクトの ID またはプロジェクト番号のカンマ区切りリスト。
プロジェクトがこのリストに含まれていない場合、そのプロジェクトではインスタンスに接続するための Private Service Connect エンドポイントを作成できません。
- MACHINE_TYPE: インスタンスのマシンタイプ。
- CONSUMER_NETWORK: Private Service Connect エンドポイントの自動作成を許可する VPC ネットワーク。
- PARENT_PROJECT: ネットワーク CONSUMER_NETWORK が含まれているプロジェクト。CONSUMER_PROJECT で別のプロジェクトを指定しない場合、エンドポイントは自動的に PARENT_PROJECT 内に作成されます。
CONSUMER_PROJECT: 省略可。CONSUMER_NETWORK が共有 VPC ネットワークであり、サービス プロジェクトでの Private Service Connect エンドポイントの自動作成を許可する場合にのみ指定します。
自動接続パラメータで指定したプロジェクトは、許可されたプロジェクトに自動的に追加されます。必要に応じて、Private Service Connect エンドポイントを手動で作成して配置するプロジェクトを、許可されたプロジェクトのリストに追加できます。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances
リクエストの本文(JSON):
{ "name": "INSTANCE_NAME ", "project":PROJECT_ID ", "region": "REGION_NAME ", "databaseVersion": "POSTGRES_13", "kind": "sql#instance", "settings": { "availabilityType": "AVAILABILITY_TYPE ", "ipConfiguration": { "ipv4Enabled": false, "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS " ], "pscAutoConnections": [ { "consumerProject":"CONSUMER_PROJECT ", "consumerNetwork":"projects/PARENT_PROJECT /global/networks/CONSUMER_NETWORK " } ], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "tier": "MACHINE_TYPE " } }
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_NAME ", "status": "RUNNING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "CREATE", "name": "OPERATION_ID ", "targetId": "INSTANCE_NAME ", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID ", "targetProject": "PROJECT_ID " }
エンドポイントを取得する
インスタンスの Private Service Connect エンドポイントとしての内部 IP アドレスを取得することで、そのエンドポイントを使用してインスタンスに接続できます。
インスタンスの Private Service Connect エンドポイントとしての IP アドレスなど、インスタンスに関する情報を表示するには、gcloud sql instances describe
コマンドを使用します。
gcloud sql instances describeINSTANCE_NAME \ --project=PROJECT_ID \ --format='json(settings.ipConfiguration.pscConfig.pscAutoConnections)'
次のように置き換えます。
- INSTANCE_NAME: Cloud SQL インスタンスの名前。このインスタンスで Private Service Connect が有効になっている場合、VPC ネットワーク内の Private Service Connect エンドポイントからの接続が可能です。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。
レスポンス内の pscConfig:pscAutoConnections:ipAddress
フィールドの横にある値をメモします。この値は、インスタンスの Private Service Connect エンドポイントでもある内部 IP アドレスです。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。
- INSTANCE_NAME: Cloud SQL インスタンスの名前。このインスタンスで Private Service Connect が有効になっている場合、VPC ネットワーク内の Private Service Connect エンドポイントからの接続が可能です。
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_NAME
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_NAME "
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_NAME " | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "kind": "sql#instance", "state": "RUNNABLE", "databaseVersion": "POSTGRES_13", "settings": { "authorizedGaeApplications": [], "tier": "db-custom-2-7680", "kind": "sql#settings", "availabilityType": "REGIONAL", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "activationPolicy": "ALWAYS", "ipConfiguration": { "authorizedNetworks": [], "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS " ], "pscAutoConnections": { consumerNetwork:"projects/PARENT_PROJECT /global/networks/CONSUMER_NETWORK ", consumerNetworkStatus:"CONSUMER_NETWORK_STATUS ", consumerProject:"CONSUMER_PROJECT ", ipAddress:"IP_ADDRESS ", status:"STATUS " }, "pscEnabled": true }, "ipv4Enabled": false }, }
Private Service Connect が有効になっているインスタンスには、次のフィールドがあります。
allowedConsumerProjects
: このインスタンスに対して許可されているプロジェクトのリスト。これらのプロジェクトの任意の VPC ネットワークからインスタンスのサービス アタッチメントへの Private Service Connect エンドポイントを作成できます。pscAutoConnections
: 許可された VPC ネットワーク、サービス接続ポリシーのステータス、インスタンスのエンドポイントとしての IP アドレスのステータス。pscEnabled
: インスタンスで Private Service Connect が有効になっているかどうか。
このタスクのための 基盤となる REST API リクエストを作成する方法については、instances:get のページをご覧ください。
エンドポイントを手動で作成する
以降のセクションでは、Private Service Connect エンドポイントを手動で作成する方法について説明します。
Cloud SQL インスタンスを作成する
インスタンスを作成し、そのインスタンスに対して Private Service Connect を有効にするには、gcloud CLI、Terraform、または API を使用できます。
インスタンスを作成し、そのインスタンスに対して Private Service Connect を有効にするには、gcloud sql instances create
コマンドを使用します。
gcloud sql instances createINSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --availability-type=AVAILABILITY_TYPE \ --no-assign-ip \ --tier=MACHINE_TYPE \ --database-version=DATABASE_VERSION
次のように置き換えます。
- INSTANCE_NAME: インスタンスの名前。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。
- REGION_NAME: インスタンスのリージョン名。
ALLOWED_PROJECTS: Private Service Connect エンドポイントに Cloud SQL インスタンスへの接続を許可するプロジェクトの ID またはプロジェクト番号のカンマ区切りリスト。
プロジェクトがこのリストに含まれていない場合、そのプロジェクトではインスタンスに接続するための Private Service Connect エンドポイントを作成できません。
- AVAILABILITY_TYPE: インスタンスの高可用性を有効にします。このパラメータには、次のいずれかの値を指定します。
REGIONAL
: 高可用性を有効にします。本番環境インスタンスに推奨されます。インスタンスは、選択したリージョン内の別のゾーンにフェイルオーバーします。ZONAL
: フェイルオーバー機能を提供しません。これがデフォルト値です。
インスタンスの高可用性の設定と削除の詳細については、高可用性向けに既存のインスタンスを構成するとインスタンスの高可用性を無効にするをご覧ください。
- MACHINE_TYPE: インスタンスのマシンタイプ。
- DATABASE_VERSION: インスタンスのデータベース バージョン(例:
POSTGRES_13
)。
インスタンスを作成し、そのインスタンスに対して Private Service Connect を有効にするには、google_sql_database_instance
Terraform リソースを使用します。
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
- Cloud Shell を起動します。
-
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=
PROJECT_ID Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
-
Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は
.tf
にする必要があります(例:main.tf
)。このチュートリアルでは、このファイルをmain.tf
とします。mkdir
DIRECTORY && cdDIRECTORY && touch main.tf -
チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。
新しく作成した
main.tf
にサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
-
Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
terraform init
最新バージョンの Google プロバイダを使用する場合は、
-upgrade
オプションを使用します。terraform init -upgrade
変更を適用する
-
構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
terraform plan
必要に応じて構成を修正します。
-
次のコマンドを実行します。プロンプトで「
yes
」と入力して、Terraform 構成を適用します。terraform apply
Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。
- Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。
- INSTANCE_NAME: インスタンスの名前。
- REGION_NAME: インスタンスのリージョン名。
- AVAILABILITY_TYPE: インスタンスの高可用性を有効にします。このパラメータには、次のいずれかの値を指定します。
REGIONAL
: 高可用性を有効にします。本番環境インスタンスに推奨されます。インスタンスは、選択したリージョン内の別のゾーンにフェイルオーバーします。ZONAL
: フェイルオーバー機能を提供しません。これがデフォルト値です。
インスタンスの高可用性の設定と削除の詳細については、高可用性向けに既存のインスタンスを構成するとインスタンスの高可用性を無効にするをご覧ください。
ALLOWED_PROJECTS: Private Service Connect エンドポイントに Cloud SQL インスタンスへの接続を許可するプロジェクトの ID またはプロジェクト番号のカンマ区切りリスト。
プロジェクトがこのリストに含まれていない場合、そのプロジェクトではインスタンスに接続するための Private Service Connect エンドポイントを作成できません。
- MACHINE_TYPE: インスタンスのマシンタイプ。
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances
リクエストの本文(JSON):
{ "name": "INSTANCE_NAME ", "project":PROJECT_ID ", "region": "REGION_NAME ", "databaseVersion": "POSTGRES_13", "kind": "sql#instance", "settings": { "availabilityType": "AVAILABILITY_TYPE ", "ipConfiguration": { "ipv4Enabled": false, "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS " ], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "tier": "MACHINE_TYPE " } }
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_NAME ", "status": "RUNNING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "CREATE", "name": "OPERATION_ID ", "targetId": "INSTANCE_NAME ", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID ", "targetProject": "PROJECT_ID " }
サービス アタッチメントを取得する
Private Service Connect が有効になっている Cloud SQL インスタンスを作成したら、サービス アタッチメント URI を取得し、取得した URI を使用して Private Service Connect エンドポイントを作成します。
Private Service Connect が有効になっているインスタンスの概要情報(インスタンスのサービス アタッチメントを指す URI を表示する pscServiceAttachmentLink
フィールドなど)を表示するには、gcloud sql instances describe
コマンドを使用します。
gcloud sql instances describeINSTANCE_NAME \ --project=PROJECT_ID
次のように置き換えます。
- INSTANCE_NAME: VPC ネットワーク内の Private Service Connect エンドポイントが接続できる Cloud SQL インスタンスの名前
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
次の例は、このコマンドの出力例を示しています。
gcloud sql instances describe myinstance \ --project=12345 ... pscServiceAttachmentLink: projects/45678/regions/myregion/serviceAttachments/myserviceattachment
サービス アタッチメント URI を取得するには、google_compute_address
Terraform リソースを使用します。
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
- Cloud Shell を起動します。
-
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=
PROJECT_ID Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
-
Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は
.tf
にする必要があります(例:main.tf
)。このチュートリアルでは、このファイルをmain.tf
とします。mkdir
DIRECTORY && cdDIRECTORY && touch main.tf -
チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。
新しく作成した
main.tf
にサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
-
Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
terraform init
最新バージョンの Google プロバイダを使用する場合は、
-upgrade
オプションを使用します。terraform init -upgrade
変更を適用する
-
構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
terraform plan
必要に応じて構成を修正します。
-
次のコマンドを実行します。プロンプトで「
yes
」と入力して、Terraform 構成を適用します。terraform apply
Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。
- Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
- INSTANCE_NAME: インスタンスの名前
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID /instances/INSTANCE_NAME
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID /instances/INSTANCE_NAME "
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID /instances/INSTANCE_NAME " | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ ... pscServiceAttachmentLink: "projects/PROJECT_ID /regions/REGION_NAME /serviceAttachments/SERVICE_ATTACHMENT_NAME " }
この pscServiceAttachmentLink
フィールドには、インスタンスのサービス アタッチメントを指し示す URI が表示されます。
Private Service Connect エンドポイントを作成する
Private Service Connect エンドポイントの内部 IP アドレスを予約し、対象のアドレスでエンドポイントを作成できます。エンドポイントを作成するには、サービス アタッチメント URI と、インスタンスに対して許可されているプロジェクトが必要です。
Private Service Connect エンドポイントの内部 IP アドレスを予約するには、
gcloud compute addresses create
コマンドを使用します。gcloud compute addresses create
ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --subnet=SUBNET_NAME \ --addresses=INTERNAL_IP_ADDRESS 次のように置き換えます。
IP アドレスが予約されていることを確認するには、
gcloud compute addresses list
コマンドを使用します。gcloud compute addresses list
ADDRESS_NAME \ --project=PROJECT_ID レスポンスで、IP アドレスに
RESERVED
ステータスが表示されていることを確認します。Private Service Connect エンドポイントを作成し、作成したエンドポイントが Cloud SQL サービス アタッチメントを指すようにするには、
gcloud compute forwarding-rules create
コマンドを使用します。gcloud compute forwarding-rules create
ENDPOINT_NAME \ --address=ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --network=NETWORK_NAME \ --target-service-attachment=SERVICE_ATTACHMENT_URI \ --allow-psc-global-access次のように置き換えます。
- ENDPOINT_NAME: エンドポイントの名前
- NETWORK_NAME: エンドポイントの VPC ネットワークの名前。
- SERVICE_ATTACHMENT_URI: サービス アタッチメントの URI。
サービス アタッチメントがエンドポイントを受け入れることを確認するには、
gcloud compute forwarding-rules describe
コマンドを使用します。gcloud compute forwarding-rules describe
ENDPOINT_NAME \ --project=PROJECT_ID \ --region=REGION_NAME レスポンスで、
pscConnectionStatus
フィールドにACCEPTED
ステータスが表示されていることを確認します。エンドポイントはサービス アタッチメントに接続できます。
Private Service Connect エンドポイントを作成するには、google_sql_database_instance
Terraform リソースを使用します。
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
- Cloud Shell を起動します。
-
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=
PROJECT_ID Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
-
Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は
.tf
にする必要があります(例:main.tf
)。このチュートリアルでは、このファイルをmain.tf
とします。mkdir
DIRECTORY && cdDIRECTORY && touch main.tf -
チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。
新しく作成した
main.tf
にサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
-
Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
terraform init
最新バージョンの Google プロバイダを使用する場合は、
-upgrade
オプションを使用します。terraform init -upgrade
変更を適用する
-
構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
terraform plan
必要に応じて構成を修正します。
-
次のコマンドを実行します。プロンプトで「
yes
」と入力して、Terraform 構成を適用します。terraform apply
Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。
- Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
Private Service Connect エンドポイントの内部 IP アドレスを予約します。
IP アドレスが予約されていることを確認します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Private Service Connect エンドポイントを含む Google Cloud プロジェクトの ID またはプロジェクト番号
- REGION_NAME: リージョンの名前
- ADDRESS_NAME: IP アドレスの名前
HTTP メソッドと URL:
GET https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID /regions/REGION_NAME /addresses/ADDRESS_NAME リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME /addresses/ADDRESS_NAME "PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME /addresses/ADDRESS_NAME " | Select-Object -Expand Content次のような JSON レスポンスが返されます。
{ "kind": "compute#address", "id": "
ADDRESS_ID ", "creationTimestamp": "2024-05-09T11:20:50.114-07:00", "name": "ADDRESS_NAME ", "description": "This is the name of the internal IP address.", "address": "IP_ADDRESS ", "status": "RESERVED", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME ", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME /addresses/ADDRESS_NAME ", "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID ", "addressType": "EXTERNAL" }レスポンスで、IP アドレスに
RESERVED
ステータスが表示されていることを確認します。Private Service Connect エンドポイントを作成し、Cloud SQL サービス アタッチメントを指すようにします。
サービス アタッチメントがエンドポイントを受け入れることを確認します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Private Service Connect エンドポイントを含む Google Cloud プロジェクトの ID またはプロジェクト番号
- REGION_NAME: リージョンの名前
- ENDPOINT_NAME: エンドポイントの名前
HTTP メソッドと URL:
GET https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID /regions/REGION_NAME /forwardingRules/ENDPOINT_NAME リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME /forwardingRules/ENDPOINT_NAME "PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME /forwardingRules/ENDPOINT_NAME " | Select-Object -Expand Content次のような JSON レスポンスが返されます。
{ "kind": "compute#forwardingRule", "id": "
ENDPOINT_ID ", "creationTimestamp": "2024-05-09T12:03:21.383-07:00", "name": "ENDPOINT_NAME ", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME ", "IPAddress": "IP_ADDRESS ", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME /serviceAttachments/SERVICE_ATTACHMENT_NAME ", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME /forwardingRules/ENDPOINT_NAME ", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID /global/networks/default", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID ", "fingerprint": "FINGERPRINT_ID ", "pscConnectionId": "CONNECTION_ID ", "pscConnectionStatus": "ACCEPTED", "allowPscGlobalAccess": true }レスポンスで、
pscConnectionStatus
フィールドにACCEPTED
ステータスが表示されていることを確認します。エンドポイントはサービス アタッチメントに接続できます。
Cloud SQL インスタンスに接続する
Private Service Connect が有効にされた Cloud SQL インスタンスに接続するには、内部 IP アドレス、DNS レコード、Cloud SQL Auth Proxy、Cloud SQL 言語コネクタ、またはその他の Google Cloud アプリケーションを使用できます。
DNS マネージド ゾーンと DNS レコードを構成する
Cloud SQL では DNS レコードは自動的には作成されません。代わりに、インスタンス ルックアップ API のレスポンスで DNS 名の候補が提示されます。対応する VPC ネットワークの限定公開 DNS ゾーンに DNS レコードを作成することをおすすめします。これにより、一貫した方法で Cloud SQL Auth Proxy を使用して異なるネットワークから接続できます。
Cloud SQL インスタンスの概要情報(インスタンスの DNS 名など)を表示するには、
gcloud sql instances describe
コマンドを使用します。gcloud sql instances describe
INSTANCE_NAME \ --project=PROJECT_ID 次のように置き換えます。
- INSTANCE_NAME: Cloud SQL インスタンスの名前
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
レスポンスに DNS 名が表示されていることを確認します。この名前には、次のようなパターンがあります:
INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.
。例:1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
。このセクションで事前に定義済みの DNS 名を使用するのではなく、カスタム DNS 名を使用して Cloud SQL インスタンスに接続する場合は、インスタンスの作成時にカスタム サブジェクト代替名(SAN)設定を構成します。カスタム SAN 設定に挿入したカスタム DNS 名は、インスタンスのサーバー証明書の SAN フィールドに追加されます。これにより、ホスト名の検証でカスタム DNS 名を安全に使用できます。
カスタム SAN 設定の構成について詳しくは、インスタンスを作成するをご覧ください。
プライベート DNS ゾーンを作成するには、
gcloud dns managed-zones create
コマンドを使用します。このゾーンは、Private Service Connect エンドポイントを介して Cloud SQL インスタンスに接続するために使用される VPC ネットワークに関連付けられています。gcloud dns managed-zones create
ZONE_NAME \ --project=PROJECT_ID \ --description=DESCRIPTION \ --dns-name=DNS_NAME \ --networks=NETWORK_NAME \ --visibility=private次のように置き換えます。
- ZONE_NAME: DNS ゾーンの名前
- PROJECT_ID: ゾーンを含む Google Cloud プロジェクトの ID またはプロジェクト番号
- DESCRIPTION: ゾーンの説明(Cloud SQL インスタンスの DNS ゾーンなど)
- DNS_NAME: ゾーンの DNS サフィックスの名前。例:
REGION_NAME.sql.goog.
(REGION_NAME はゾーンのリージョン名) - NETWORK_NAME: VPC ネットワークの名前
Private Service Connect エンドポイントを作成した後、ゾーンに DNS レコードを作成するには、
gcloud dns record-sets create
コマンドを使用します。gcloud dns record-sets create
DNS_RECORD \ --project=PROJECT_ID \ --type=RRSET_TYPE \ --rrdatas=RR_DATA \ --zone=ZONE_NAME 次のように置き換えます。
- DNS_RECORD: DNS レコードの名前。このレコードは、この手順の前半で Cloud SQL インスタンスから取得した DNS 名に設定します(例:
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
)。 - RRSET_TYPE: DNS レコードセットのリソース レコードタイプ(例:
A
)。 - RR_DATA: Private Service Connect エンドポイントに割り振られた IP アドレス(例:
198.51.100.5
)。rrdata1 rrdata2 rrdata3
などの複数の値を入力することもできます(例:10.1.2.3 10.2.3.4 10.3.4.5
)。
- DNS_RECORD: DNS レコードの名前。このレコードは、この手順の前半で Cloud SQL インスタンスから取得した DNS 名に設定します(例:
- Cloud SQL インスタンスの DNS 名を取得します。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
- INSTANCE_NAME: インスタンスの名前
- 限定公開 DNS ゾーンを作成します。このゾーンは、Private Service Connect エンドポイントを介して Cloud SQL インスタンスに接続するために使用される VPC ネットワークに関連付けられています。
- PROJECT_ID: DNS ゾーンを含む Google Cloud プロジェクトの ID またはプロジェクト番号
- ZONE_NAME: ゾーンの名前
- DESCRIPTION: ゾーンの説明(Cloud SQL インスタンスの DNS ゾーンなど)
- DNS_NAME: ゾーンの DNS サフィックスの名前。例:
REGION_NAME.sql.goog.
(REGION_NAME はゾーンのリージョン名) - NETWORK_NAME: VPC ネットワークの名前
- Private Service Connect エンドポイントを作成した後、ゾーンに DNS レコードを作成します。
- PROJECT_ID: DNS ゾーンを含む Google Cloud プロジェクトの ID またはプロジェクト番号。
- ZONE_NAME: ゾーンの名前。
- DNS_RECORD: DNS レコードの名前。このレコードは、この手順の前半で Cloud SQL インスタンスから取得した DNS 名に設定します(例:
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
)。 - RRSET_TYPE: レコードセットのタイプ(例:
A
)。 - TTL: レコードセットの有効期間(TTL)の秒数(例:
300
)。 - RR_DATA: Private Service Connect エンドポイントに割り振られた IP アドレス(例:
198.51.100.5
)。rrdata1 rrdata2 rrdata3
などの複数の値を入力することもできます(例:10.1.2.3 10.2.3.4 10.3.4.5
)。
リクエストのデータを使用する前に、次のように置き換えます。
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID /instances/INSTANCE_NAME
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID /instances/INSTANCE_NAME "
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID /instances/INSTANCE_NAME " | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ ... "dnsName": "INSTANCE_ID .PROJECT_DNS_LABEL .REGION_NAME .sql.goog." }
dnsName
フィールドには、Cloud SQL インスタンスの DNS 名が表示されます。DNS 名の末尾は常にピリオド(.
)です。
リクエストのデータを使用する前に、次のように置き換えます。
HTTP メソッドと URL:
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID /managedZones
リクエストの本文(JSON):
{ "name": "ZONE_NAME ", "description": "DESCRIPTION ", "dnsName": "DNS_NAME ", "visibility": "private", "privateVisibilityConfig": { "kind": "dns#managedZonePrivateVisibilityConfig", "networks": [ { "kind": "dns#managedZonePrivateVisibilityConfigNetwork", "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID /global/networks/NETWORK_NAME " } ] } }
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://dns.googleapis.com/dns/v1/projects/PROJECT_ID /managedZones"
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://dns.googleapis.com/dns/v1/projects/PROJECT_ID /managedZones" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "ZONE_NAME ", "dnsName": "DNS_NAME ", "description": "DESCRIPTION ", "id": "ID ", "nameServers": [ "ns-gcp-private.googledomains.com." ], "creationTime": "2024-05-10T17:05:34.607Z", "visibility": "private", "privateVisibilityConfig": { "networks": [ { "networkUrl": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID /global/networks/NETWORK_NAME ", "kind": "dns#managedZonePrivateVisibilityConfigNetwork" } ], "gkeClusters": [], "kind": "dns#managedZonePrivateVisibilityConfig" }, "cloudLoggingConfig": { "kind": "dns#managedZoneCloudLoggingConfig" }, "kind": "dns#managedZone" }
リクエストのデータを使用する前に、次のように置き換えます。
HTTP メソッドと URL:
POST https://dns.googleapis.com/dns/v1/projects/PROJECT_ID /managedZones/ZONE_NAME
リクエストの本文(JSON):
{ "deletions": [] "additions": [ { "name": "DNS_RECORD ", "type": "RRSET_TYPE ", "ttl":TTL , "rrdatas": [ "RR_DATA " ] } ] }
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://dns.googleapis.com/dns/v1/projects/PROJECT_ID /managedZones/ZONE_NAME "
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://dns.googleapis.com/dns/v1/projects/PROJECT_ID /managedZones/ZONE_NAME " | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "additions": [ { "name": "DNS_RECORD ", "type": "RRSET_TYPE ", "ttl":TTL , "rrdatas": [ "RR_DATA " ], "signatureRrdatas": [], "kind": "dns#resourceRecordSet" } ], "deletions": [], "startTime": "2024-05-10T17:29:44.375Z", "id": "CHANGE_ID ", "status": "pending", "kind": "dns#change" }
DNS レコードを使用して直接接続する
DNS レコードを使用して Cloud SQL インスタンスに接続する前に、次の操作を行います。
- Private Service Connect エンドポイントを作成します。
- インスタンスのサービス アタッチメントがエンドポイントを受け入れることを確認します。エンドポイントのステータスが
ACCEPTED
であることを確認するには、ステータスを確認します。 - DNS マネージド ゾーンと DNS レコードを構成します。
これらの条件を満たしたら、DNS レコードを使用して、エンドポイントを作成した任意の VPC ネットワークからインスタンスに接続します。
psql "sslmode=disable dbname=DATABASE_NAME user=USERNAME host=DNS_RECORD "
次のように置き換えます。
- DATABASE_NAME: インスタンスに含まれる Cloud SQL for PostgreSQL データベースの名前
- USERNAME: インスタンスに接続するユーザーの名前
- DNS_RECORD: エンドポイントの DNS レコード
内部 IP アドレスを介して直接接続する
Private Service Connect が有効にされた Cloud SQL インスタンスに接続する前に、次の操作を行います。
- Private Service Connect エンドポイントを作成します。
- インスタンスのサービス アタッチメントがエンドポイントを受け入れることを確認します。エンドポイントのステータスが
ACCEPTED
であることを確認するには、ステータスを確認します。
これらの条件を満たしたら、エンドポイントの IP アドレスを使用して、エンドポイントを作成した任意の VPC ネットワークからインスタンスにアクセスします。
Private Service Connect エンドポイントの IP アドレスの名前を使用して、Private Service Connect エンドポイントの内部 IP アドレスを取得します。
IP アドレスを取得するには、
gcloud compute addresses describe
コマンドを使用します。gcloud compute addresses describe
ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME 次のように置き換えます。
- ADDRESS_NAME: エンドポイントの IP アドレスの名前
- PROJECT_ID: エンドポイントを含む Google Cloud プロジェクトの ID またはプロジェクト番号
- REGION_NAME: エンドポイントのリージョン名
レスポンスで、
address
フィールドに IP アドレスが表示されていることを確認します。これは内部 IP アドレスです。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: エンドポイントを含む Google Cloud プロジェクトの ID またはプロジェクト番号
- REGION_NAME: エンドポイントのリージョン名
- ADDRESS_NAME: エンドポイントの IP アドレスの名前
HTTP メソッドと URL:
GET https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID /regions/REGION_NAME /addresses/ADDRESS_NAME リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME /addresses/ADDRESS_NAME "PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME /addresses/ADDRESS_NAME " | Select-Object -Expand Content次のような JSON レスポンスが返されます。
{ "kind": "compute#address", "id": "
ADDRESS_ID ", "creationTimestamp": "2024-05-09T11:20:50.114-07:00", "name": "ADDRESS_NAME ", "description": "This is the name of the internal IP address.", "address": "IP_ADDRESS ", "status": "RESERVED", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME ", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME /addresses/ADDRESS_NAME ", "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID ", "addressType": "EXTERNAL" }内部 IP アドレスは、
address
フィールドに関連付けられた値です。または、Cloud SQL インスタンスのサービス アタッチメントを使用して、Private Service Connect エンドポイントの内部 IP アドレスを取得することもできます。
IP アドレスを取得するには、
gcloud compute forwarding-rules list
コマンドを使用します。gcloud compute forwarding-rules list \ --filter="TARGET:
REGION_NAME /serviceAttachments/SERVICE_ATTACHMENT_NAME " \ --project=PROJECT_ID 次のように置き換えます。
- REGION_NAME: エンドポイントのリージョン名
- PROJECT_ID: エンドポイントを含む Google Cloud プロジェクトの ID またはプロジェクト番号
- SERVICE_ATTACHMENT_NAME: Cloud SQL インスタンスのサービス アタッチメントの名前
レスポンスに IP アドレスが表示されていることを確認します。これは内部 IP アドレスです。
レスポンスの例を次に示します。
NAME
REGION
IP_ADDRESS
TARGET
myInstance
us-central1
10.10.10.10
us-central1/serviceAttachments/a-123456789e0a-psc-service-attachment-abc123d4e5f67gh8
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: エンドポイントを含む Google Cloud プロジェクトの ID またはプロジェクト番号
- REGION_NAME: エンドポイントのリージョン名
- SERVICE_ATTACHMENT_PROJECT_ID: サービス アタッチメントが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
- SERVICE_ATTACHMENT_NAME: Cloud SQL インスタンスのサービス アタッチメントの名前
HTTP メソッドと URL:
GET https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID /regions/REGION_NAME /forwardingRules?target="https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID /regions/REGION_NAME /serviceAttachments/SERVICE_ATTACHMENT_NAME "リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME /forwardingRules?target="https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID /regions/REGION_NAME /serviceAttachments/SERVICE_ATTACHMENT_NAME ""PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME /forwardingRules?target="https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID /regions/REGION_NAME /serviceAttachments/SERVICE_ATTACHMENT_NAME "" | Select-Object -Expand Content次のような JSON レスポンスが返されます。
{ "kind": "compute#forwardingRuleList", "id": "projects/
PROJECT_ID /regions/REGION_NAME /forwardingRules", "items": [ { "kind": "compute#forwardingRule", "id": "FORWARDING_RULE_ID ", "creationTimestamp": "2023-10-31T13:04:37.168-07:00", "name": "FORWARDING_RULE_NAME ", "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME ", "IPAddress": "IP_ADDRESS ", "target": "https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID /regions/REGION_NAME /serviceAttachments/SERVICE_ATTACHMENT_NAME ", "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME /forwardingRules/FORWARDING_RULE_NAME ", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID /global/networks/VPC_NETWORK_NAME ", "serviceDirectoryRegistrations": [ { "namespace": "goog-psc-default" } ], "networkTier": "PREMIUM", "labelFingerprint": "LABEL_FINGERPRINT_ID ", "fingerprint": "FINGERPRINT_ID ", "pscConnectionId": "PSC_CONNECTION_ID ", "pscConnectionStatus": "CLOSED", "allowPscGlobalAccess": true } ], "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID /regions/REGION_NAME /forwardingRules" }内部 IP アドレスは、
IPAddress
フィールドに関連付けられた値です。-
Cloud SQL インスタンスに接続するには、内部 IP アドレスを使用します。
psql "sslmode=disable dbname=
DATABASE_NAME user=USERNAME hostaddr=IP_ADDRESS "次のように置き換えます。
- DATABASE_NAME: インスタンスに含まれる Cloud SQL for PostgreSQL データベースの名前
- USERNAME: インスタンスに接続するユーザーの名前
- IP_ADDRESS: エンドポイントの IP アドレス
Cloud SQL Auth Proxy を使用して接続する
Cloud SQL Auth Proxy は、承認済みネットワークや SSL の構成を必要とせずに、Private Service Connect が有効なインスタンスへの安全なアクセスを提供するコネクタです。
Cloud SQL Auth Proxy クライアントの接続を許可するには、インスタンスに指定された推奨 DNS 名に一致する DNS レコードを設定します。DNS レコードは、DNS リソースとドメイン名のマッピングです。
Private Service Connect を介して接続する場合は、Cloud SQL Auth Proxy バージョン v2.5.0 以降が必要です。
Cloud SQL Auth Proxy をダウンロードしてインストールする
Private Service Connect が有効になっているインスタンスに接続するには、Cloud SQL Auth Proxy のバイナリをダウンロードしてインストールする必要があります。ダウンロードするバイナリは、オペレーティング システムと、使用しているカーネルが 32 ビットか 64 ビットかによって異なります。新しいハードウェアのほとんどは 64 ビットのカーネルを使用しています。
お使いのマシンが 32 ビットと 64 ビットのどちらのカーネルを実行しているかわからない場合は、Linux または macOS で uname -a
コマンドを使用します。Windows の場合は、Windows のドキュメントをご覧ください。
Cloud SQL Auth Proxy を起動する
Cloud SQL Auth Proxy は、Private Service Connect が有効になっているインスタンスへの接続をサポートしています。詳細については、Cloud SQL Auth Proxy を起動するをご覧ください。
- Cloud SQL インスタンスの概要情報(インスタンスの接続名など)を表示します。
Cloud SQL インスタンスの概要情報を表示するには、
gcloud sql instances describe
コマンドを使用します。gcloud sql instances describe
INSTANCE_NAME \ --project=PROJECT_ID \ --format='value(connectionName)'次のように置き換えます。
- INSTANCE_NAME: Cloud SQL インスタンスの名前
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
この接続名は
PROJECT_ID:REGION_NAME:INSTANCE_NAME
の形式で記述します。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
- INSTANCE_NAME: インスタンスの名前
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/sql/v1/projects/
PROJECT_ID /instances/INSTANCE_NAME リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID /instances/INSTANCE_NAME "PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID /instances/INSTANCE_NAME " | Select-Object -Expand Content次のような JSON レスポンスが返されます。
{ ... "connectionName": "
PROJECT_ID :REGION_NAME :INSTANCE_NAME " }この接続名は
PROJECT_ID:REGION_NAME:INSTANCE_NAME
の形式で記述します。 - インスタンス接続名をコピーします。
Cloud SQL Auth Proxy を起動します。
./cloud-sql-proxy
INSTANCE_CONNECTION_NAME --pscINSTANCE_CONNECTION_NAME を、前のステップでコピーしたインスタンス接続名に置き換えます。
Cloud SQL 言語コネクタを使用して接続する
Cloud SQL 言語コネクタは、Private Service Connect が有効になっている Cloud SQL インスタンスへの安全なアクセスを提供するライブラリであり、承認済みネットワークや SSL 構成は不要です。
Cloud SQL 言語コネクタとの接続を許可するには、インスタンスに指定された推奨 DNS 名に一致する DNS レコードを設定します。DNS レコードは、DNS リソースとドメイン名のマッピングです。
Cloud SQL 言語コネクタは、それぞれのライブラリ内の PSC
IP タイプを介した Private Service Connect 接続をサポートしています。
- Cloud SQL Python コネクタ(v1.3.0 以降)
- Cloud SQL Go コネクタ(v1.4.0 以降)
- Cloud SQL Java コネクタ(v1.13.0 以降)
- Cloud SQL Node.js コネクタ(v0.5.0 以降)
App Engine スタンダード、Cloud Run、Cloud Run 関数から接続する
Private Service Connect が有効になっている Cloud SQL インスタンスに接続するには、App Engine スタンダード環境、Cloud Run、または Cloud Run 関数を使用します。
このようなサーバーレス環境では、Cloud SQL 言語コネクタと、IP アドレスとポート番号を使用した直接 TCP 接続の両方がサポートされています。直接 TCP 接続の場合、これは Private Service Connect エンドポイントを作成するときに予約する IP アドレスです。IP アドレスは、データベース ホストのアドレスとして指定できます。
エンドポイントに DNS レコードを作成する場合は、このレコードをホストに指定できます。
BigQuery から接続する
Cloud SQL のデータにアクセスし、内部 IP 接続を介してこのデータに対してクエリを実行するには、--enable-google-private-path
パラメータを使用します。このパラメータは次の場合にのみ有効です。
--no-assign-ip
パラメータを使用する。--network
パラメータを使用して、内部接続の作成に使用する VPC ネットワークの名前を指定する。
接続をテストする
Private Service Connect が有効になっている Cloud SQL インスタンスへのインバウンド接続をテストするには、Private Service Connect エンドポイントの IP アドレスを宛先 IP アドレスに設定します。
Private Service Connect が有効になっている Cloud SQL インスタンスの接続テストを作成するには、gcloud network-management connectivity-tests create
コマンドを使用します。
gcloud network-management connectivity-tests createCONNECTIVITY_TEST_NAME \ --source-instance=SOURCE_INSTANCE \ --destination-cloud-sql-instance=DESTINATION_CLOUD_SQL_INSTANCE \ --destination-network=DESTINATION_NETWORK \ --destination-port=DESTINATION_PORT \ --protocol=tcp
次のように置き換えます。
- CONNECTIVITY_TEST_NAME: 接続テストの名前。
- SOURCE_INSTANCE: 送信元 IP アドレスがある Compute Engine インスタンスの URI(例:
projects/myproject/zones/myzone/instances/myinstance
)。 - DESTINATION_CLOUD_SQL_INSTANCE: Cloud SQL インスタンスの URL(例:
projects/myproject/instances/myinstance
)。 - DESTINATION_NETWORK: 宛先 IP アドレスがある VPC ネットワークの URI(例:
projects/myproject/global/networks/mynetwork
)。 - DESTINATION_PORT: インスタンス用に予約されたポート番号。Cloud SQL for PostgreSQL インスタンスの場合、ポート番号は
5432
です。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号。
- CONNECTIVITY_TEST_NAME: 接続テストの名前。
- SOURCE_IP_ADDRESS: 送信元 Compute Engine インスタンスの IP アドレス。
- SOURCE_INSTANCE: 送信元 IP アドレスがある Compute Engine インスタンスの URI(例:
projects/myproject/zones/myzone/instances/myinstance
)。 - SOURCE_NETWORK: 送信元 IP アドレスがある VPC ネットワークの URI(例:
projects/myproject/global/networks/mynetwork
)。 - DESTINATION_IP_ADDRESS: 宛先の Cloud SQL インスタンスの IP アドレス。
- DESTINATION_PORT: インスタンス用に予約されたポート番号。Cloud SQL for PostgreSQL インスタンスの場合、ポート番号は
5432
です。 - DESTINATION_NETWORK: 宛先 IP アドレスがある VPC ネットワークの URI(例:
projects/myproject/global/networks/mynetwork
)。
HTTP メソッドと URL:
POST https://networkmanagement.googleapis.com/v1beta/projects/PROJECT_ID /locations/global/connectivityTests?testId=CONNECTIVITY_TEST_NAME
リクエストの本文(JSON):
{ "source": { "ipAddress": "SOURCE_IP_ADDRESS ", "instance": "SOURCE_INSTANCE ", "network": "SOURCE_NETWORK " }, "destination": { "ipAddress": "DESTINATION_IP_ADDRESS ", "port":DESTINATION_PORT , "network": "DESTINATION_NETWORK ", "projectId": "PROJECT_ID " }, "protocol": "TCP" }
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://networkmanagement.googleapis.com/v1beta/projects/PROJECT_ID /locations/global/connectivityTests?testId=CONNECTIVITY_TEST_NAME "
PowerShell(Windows)
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://networkmanagement.googleapis.com/v1beta/projects/PROJECT_ID /locations/global/connectivityTests?testId=CONNECTIVITY_TEST_NAME " | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_ID /locations/global/operations/operation-OPERATION_ID ", "metadata": { "@type": "type.googleapis.com/google.cloud.networkmanagement.v1.OperationMetadata", "createTime": "2024-05-23T16:43:49.313981473Z", "target": "projects/PROJECT_ID /locations/global/connectivityTests/CONNECTIVITY_TEST_NAME ", "verb": "create", "cancelRequested": false, "apiVersion": "v1" }, "done": false }
制限事項
- Private Service Connect が有効になっている Cloud SQL インスタンスのサービス アタッチメントに接続する Private Service Connect エンドポイントは、20 個まで設定できます。
- Private Service Connect が有効になっているインスタンスには Private Service Connect バックエンドを使用できません。
- 次のフラグが無効であるか、影響を受けています。
- Private Service Connect が有効になっているインスタンスは、外部 IP 接続などの他の接続タイプを使用できないため、
--no-assign-ip:
ではこのフラグを使用します。 --authorized-networks:
このフラグを使用して承認済みネットワークを追加することはできません。--network:
このフラグはプライベート サービス アクセスに関連付けられているため使用できません。--allocated-ip-range-name:
許可された IP 範囲名がサポートされていないため、このフラグは使用できません。
- Private Service Connect が有効になっているインスタンスは、外部 IP 接続などの他の接続タイプを使用できないため、
- Private Service Connect が有効になっているインスタンスの外部レプリカを作成することはできません。
- Private Service Connect が有効になっているインスタンスを、プライベート サービス アクセスまたは外部 IP 接続を使用するように構成することはできません。
- Private Service Connect が有効になっているインスタンスでは、外部 IP 接続を有効にできません。
- プライベート サービス アクセスの有効化や承認済みネットワークのインスタンスへの追加はできません。
- インスタンスの接続タイプは変更できません。
- Private Service Connect が有効になっている Cloud SQL インスタンスに
gcloud sql connect
コマンド、Cloud Shell、Cloud Build、Datastream を使用して接続することはできません。 - Cloud SQL への同種移行を行う場合、Private Service Connect が有効になっている Cloud SQL インスタンスに Database Migration Service を使用して接続することはできません。
- Private Service Connect が有効になっている Cloud SQL インスタンスへの接続をテストする場合、次の項目は設定できません。
- 直接接続の宛先としてのインスタンスの内部 IP アドレスまたは DNS 名
- 接続元としてのインスタンス
- 接続元としての Private Service Connect エンドポイントの IP アドレス
- 承認済みネットワークを使用した IP ベースの許可リストはサポートされていません。
pglogical
、pl/proxy
、dblink
、postgres_fdw
の拡張機能はサポートされていません。- クライアント IP ベースの制御、ロギング、指標は、クエリとシステムの分析情報ではサポートされていません。ただし、VPN と相互接続はサポートされています。
- ネットワーク プロジェクトに以前の Cloud SQL ネットワーク アーキテクチャを使用するインスタンスが含まれている場合、Private Service Connect インスタンスは作成できません。Cloud SQL には、以前のネットワーク アーキテクチャから新しいネットワーク アーキテクチャにインスタンスをアップグレードする場合に役立つツールが用意されています。詳細や、プロジェクト内の Cloud SQL インスタンスのネットワーク アーキテクチャを確認して必要なアップグレードを行う方法については、インスタンスを新しいネットワーク アーキテクチャにアップグレードするをご覧ください。
トラブルシューティング
このセクションでは、Private Service Connect が有効になっている Cloud SQL インスタンスに関連する問題と、その問題のトラブルシューティング手順について説明します。
問題 | トラブルシューティング |
---|---|
インスタンスのサービス アタッチメントが、Private Service Connect エンドポイントを受け入れない。 |
|
次のステップ
- プライベート IP の詳細を確認する。
- Private Service Connect の詳細を確認する。
- Private Service Connect が有効になっているインスタンスのリードレプリカの作成の詳細を確認する。
- Private Service Connect が有効になっているインスタンスのクローン作成の詳細を確認する。
- Private Service Connect が有効になっているインスタンスの概要情報の表示について詳細を確認する。
- Private Service Connect が有効になっているインスタンスの高可用性の設定と削除の詳細を確認する。
- Private Service Connect が有効になっているインスタンスの編集と削除の詳細を確認する。