プライベート IP を構成する

このページでは、プライベート IP を使用する Cloud SQL インスタンスを構成する方法について説明します。

プライベート IP の仕組み、および環境と管理に関する要件については、プライベート IP をご覧ください。

始める前に

API と IAM の要件

  • Google Cloud プロジェクトで Service Networking API を有効にする必要があります。
  • 共有 VPC ネットワークを使用している場合は、ホスト プロジェクトでもこの API を有効にする必要があります。

  • プライベート サービス アクセス接続を管理するには、ユーザーに次の Identity and Access Management(IAM)権限が必要です。必要な権限がない場合は、権限不足のエラーが発生することがあります。
    • compute.networks.list
    • compute.addresses.create
    • compute.addresses.list
    • servicenetworking.services.addPeering

    また、共有 VPC ネットワークを使用している場合は、ユーザーをホスト プロジェクトに追加して、そのホスト プロジェクトのユーザーに同じ権限を割り当てる必要もあります。

プライベート サービス アクセス

プロジェクトで新しい Virtual Private Cloud(VPC)ネットワークを作成する場合は、プライベート サービス アクセスを構成して IP アドレス範囲を割り振り、プライベート サービス接続を作成する必要があります。これにより、VPC ネットワーク内のリソースは Cloud SQL インスタンスに接続できます。Google Cloud コンソールには、この構成を設定するためのウィザードが用意されています。

プライベート IP を使用するようにインスタンスを構成する

インスタンスの作成時に、プライベート IP を使用するように Cloud SQL インスタンスを構成できます。また、同じ構成を既存のインスタンスに行うこともできます。

新しいインスタンスにプライベート IP を構成する

インスタンスの作成時に Cloud SQL インスタンスがプライベート IP を使用するように構成するには:

Console

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. [インスタンスを作成] をクリックします。
  3. [設定オプションを表示] を展開します。
  4. [接続] を開きます。
  5. [プライベート IP] を選択します。

    プルダウン リストに、プロジェクトで使用可能な VPC ネットワークが表示されます。プロジェクトが共有 VPC のサービス プロジェクトである場合、ホスト プロジェクトの VPC ネットワークも表示されます。

  6. 使用する VPC ネットワークを選択します。
  7. プライベート サービス接続を設定する必要があることを示すメッセージが表示された場合は、次の手順を行います。

    1. [接続の設定] をクリックします。
    2. [IP 範囲を割り振る] セクションで、次のいずれかのオプションを選択します。
      • 既存の IP 範囲を 1 つ以上選択するか、プルダウンから新しい IP 範囲を作成します。プルダウンには、以前に割り振られた範囲があればそれが含まれます。または、[新しい IP 範囲の割り振り] を選択して、新しい範囲と名前を入力することもできます。
      • ネットワークで自動的に割り振られた IP 範囲を使用します
    3. [続行] をクリックします。
    4. [接続の作成] をクリックします。
    5. Private service connection for network VPC_NETWORK_NAME has been successfully created」というメッセージが表示されていることを確認します。
  8. 必要に応じて、接続に使用するインスタンスに割り振る IP 範囲を指定できます。
    1. [割り振られた IP 範囲のオプションを表示] を展開します。
    2. プルダウン メニューから IP 範囲を選択します。
  9. 省略可。他の Google Cloud サービス(たとえば BigQuery)から、プライベート IP 接続を介して Cloud SQL 内のデータにアクセスして、このデータに対してクエリを実行できるようにする場合は、[プライベート パスを有効にする] を選択します。
  10. インスタンスの構成を完了します。
  11. [インスタンスを作成] をクリックします。

gcloud

プライベート IP アドレスを使用してインスタンスを作成する前に、プロジェクトがプライベート サービス アクセス用に構成されていることを確認してください。

リクエストのデータを使用する前に、次のように置き換えます。

  • INSTANCE_ID: インスタンス ID
  • PROJECT_ID: プロジェクト ID
  • NETWORK_PROJECT_ID: VPC ネットワークのプロジェクト ID

  • VPC_NETWORK_NAME: VPC ネットワークの名前
  • RANGE_NAME: 省略可。 指定すると、IP 範囲が割り振られる範囲名が設定されます。範囲名は RFC-1035 を遵守し、1~63 文字にする必要があります。
  • DATABASE_VERSION: PostgreSQL データベースのバージョン(例: POSTGRES_14
  • NUMBER_OF_CPU: CPU の数
  • MEMORY_IN_GB: メモリ容量(GB)
  • REGION_NAME: リージョン名
VPC ネットワークの名前を指定するには、--network パラメータを使用します。 パブリック IP を無効にするには、--no-assign-ip フラグを使用します。

また、必要に応じて --enable-google-private-path パラメータを使用して、BigQuery などの他の Google Cloud サービスが Cloud SQL 内のデータにアクセスし、プライベート IP 接続でこのデータに対するクエリを実行できるようにします。このパラメータは次の場合にのみ有効です。

  • --no-assign-ip パラメータを使用する。
  • --network パラメータを使用して、プライベート接続の作成に使用する VPC ネットワークの名前を指定する。

gcloud beta sql instances create INSTANCE_ID \
--project=PROJECT_ID \
--network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \
--no-assign-ip \
--allocated-ip-range-name=RANGE_NAME \
--enable-google-private-path \
--database-version=DATABASE_VERSION \
--cpu=NUMBER_OF_CPU \
--memory=MEMORY_IN_GB \
--region=REGION_NAME

Terraform

新しいインスタンスにプライベート IP を構成するには、次の Terraform リソースを使用します。


resource "google_compute_network" "peering_network" {
  name                    = "private-network"
  auto_create_subnetworks = "false"
}

resource "google_compute_global_address" "private_ip_address" {
  name          = "private-ip-address"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 16
  network       = google_compute_network.peering_network.id
}

resource "google_service_networking_connection" "default" {
  network                 = google_compute_network.peering_network.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [google_compute_global_address.private_ip_address.name]
}

resource "google_sql_database_instance" "default" {
  name             = "private-ip-sql-instance"
  region           = "us-central1"
  database_version = "POSTGRES_14"

  depends_on = [google_service_networking_connection.default]

  settings {
    tier = "db-custom-2-7680"
    ip_configuration {
      ipv4_enabled    = "false"
      private_network = google_compute_network.peering_network.id
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

resource "google_compute_network_peering_routes_config" "peering_routes" {
  peering              = google_service_networking_connection.default.peering
  network              = google_compute_network.peering_network.name
  import_custom_routes = true
  export_custom_routes = true
}

# [START  cloud_sql_postgres_instance_private_ip_dns]

## Uncomment this block after adding a valid DNS suffix

# resource "google_service_networking_peered_dns_domain" "default" {
#   name       = "example-com"
#   network    = google_compute_network.peering_network.id
#   dns_suffix = "example.com."
#   service    = "servicenetworking.googleapis.com"
# }

変更を適用する

Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。

Cloud Shell を準備する

  1. Cloud Shell を起動します。
  2. Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。

    このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。

ディレクトリを準備する

Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。

  1. Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は .tf にする必要があります(例: main.tf)。このチュートリアルでは、このファイルを main.tf とします。
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。

    新しく作成した main.tf にサンプルコードをコピーします。

    必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。

  3. 環境に適用するサンプル パラメータを確認し、変更します。
  4. 変更を保存します。
  5. Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行う必要があります。
    terraform init

    必要に応じて、最新バージョンの Google プロバイダを使用する場合は、-upgrade オプションを使用します。

    terraform init -upgrade

変更を適用する

  1. 構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
    terraform plan

    必要に応じて構成を修正します。

  2. 次のコマンドを実行し、プロンプトで「yes」と入力して、Terraform 構成を適用します。
    terraform apply

    Terraform に「Apply complete!」のメッセージが表示されるまで待ちます。

  3. Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。

変更を削除する

変更を削除するには、次の手順を行います。

  1. 削除の保護を無効にするには、Terraform 構成ファイルで deletion_protection 引数を false に設定します。
    deletion_protection =  "false"
  2. 次のコマンドを実行し、プロンプトで「yes」と入力して、更新された Terraform 構成を適用します。
    terraform apply
  1. 以前に Terraform 構成で適用されたリソースを削除するには、次のコマンドを実行して、プロンプトに「yes」と入力します。

    terraform destroy

REST v1

プライベート IP アドレスを持つ新しいインスタンスを作成します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID:: プロジェクト ID
  • INSTANCE_ID:: インスタンス ID
  • VPC_NETWORK_NAME:: このインスタンスに使用する Virtual Private Cloud(VPC)ネットワークの名前を指定します。このネットワークに対して、プライベート サービス アクセスがすでに構成されている必要があります。
  • RANGE_NAME:: 省略可。指定すると、IP 範囲が割り当てられる範囲名が設定されます。範囲名は RFC-1035 に準拠し、1~63 文字にする必要があります。
  • AUTHORIZED_NETWORKS: パブリック IP 接続の場合は、インスタンスに接続できる承認済みネットワークからの接続を指定します。

ipv4Enabled パラメータには、インスタンスにパブリック IP アドレスを使用する場合は true を設定し、インスタンスにプライベート IP アドレスを使用する場合は false を設定します。

enablePrivatePathForGoogleCloudServices パラメータを true に設定すると、BigQuery などの他の Google Cloud サービスに、Cloud SQL 内のデータに対するアクセスが許可され、プライベート IP 接続を介してこのデータに対してクエリを実行できるようになります。このパラメータを false に設定すると、他の Google Cloud サービスは、プライベート IP 接続を介した Cloud SQL 内のデータへのアクセスができなくなります。

HTTP メソッドと URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

リクエストの本文(JSON):

{
  "name": "INSTANCE_ID",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
      "allocatedIpRange": "RANGE_NAME"
      "authorizedNetworks": [AUTHORIZED_NETWORKS],
      
      "enablePrivatePathForGoogleCloudServices": true
      
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

REST v1beta4

プライベート IP アドレスを持つ新しいインスタンスを作成します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID:: プロジェクト ID
  • INSTANCE_ID:: インスタンス ID
  • VPC_NETWORK_NAME:: このインスタンスに使用する Virtual Private Cloud(VPC)ネットワークの名前を指定します。このネットワークに対して、プライベート サービス アクセスがすでに構成されている必要があります。
  • RANGE_NAME:: 省略可。指定すると、IP 範囲が割り当てられる範囲名が設定されます。範囲名は RFC-1035 に準拠し、1~63 文字にする必要があります。
  • AUTHORIZED_NETWORKS: パブリック IP 接続の場合は、インスタンスに接続できる承認済みネットワークからの接続を指定します。

ipv4Enabled パラメータには、インスタンスにパブリック IP アドレスを使用する場合は true を設定し、インスタンスにプライベート IP アドレスを使用する場合は false を設定します。

enablePrivatePathForGoogleCloudServices パラメータを true に設定すると、BigQuery などの他の Google Cloud サービスに、Cloud SQL 内のデータに対するアクセスが許可され、プライベート IP 接続を介してこのデータに対してクエリを実行できるようになります。このパラメータを false に設定すると、他の Google Cloud サービスは、プライベート IP 接続を介した Cloud SQL 内のデータへのアクセスができなくなります。

HTTP メソッドと URL:

POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances

リクエストの本文(JSON):

{
  "name": "INSTANCE_ID",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
      "allocatedIpRange": "RANGE_NAME"
      "authorizedNetworks": [AUTHORIZED_NETWORKS],
      
      "enablePrivatePathForGoogleCloudServices": true
      
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

既存のインスタンスにプライベート IP を構成する

プライベート IP を使用するように既存の Cloud SQL インスタンスを構成すると、インスタンスが再起動し、ダウンタイムが生じます。

プライベート IP を使用するように既存のインスタンスを構成するには:

Console

  1. Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. Cloud SQL ナビゲーション メニューから [接続] を選択します。
  4. [ネットワーキング] タブの [プライベート IP] チェックボックスをオンにします。

    プロジェクトで使用可能なネットワークがプルダウン リストに表示されます。

  5. 使用する VPC ネットワークを選択します。
  6. [プライベート サービス接続が必要] と表示された場合:

    1. [接続の設定] をクリックします。
    2. [IP 範囲を割り当てる] セクションで、次のいずれかのオプションを選択します。
      • 既存の IP 範囲を 1 つ以上選択するか、プルダウンから新しい IP 範囲を作成します。プルダウンには、以前に割り振られた範囲があればそれが含まれます。または、[新しい IP 範囲の割り振り] を選択して、新しい範囲と名前を入力することもできます。
      • ネットワークで自動的に割り振られた IP 範囲を使用します。
    3. [続行] をクリックします。
    4. [接続の作成] をクリックします。
    5. ステータスを確認し、ネットワーク VPC_NETWORK_NAME のプライベート サービス接続が正常に作成されたことを確認します。
  7. 省略可。他の Google Cloud サービス(たとえば BigQuery)から、プライベート IP 接続を介して Cloud SQL 内のデータにアクセスして、このデータに対してクエリを実行できるようにする場合は、[プライベート パスを有効にする] チェックボックスをオンにします。
  8. [保存] をクリックします。

gcloud

プロジェクトがプライベート サービス アクセス用に構成されていることを確認してください。

--network パラメータを使用して、選択した VPC ネットワークの名前を指定し、Cloud SQL インスタンスを更新します。

gcloud beta sql instances patch INSTANCE_ID \
--project=PROJECT_ID \
--network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \
--no-assign-ip \
--enable-google-private-path

REST v1

プライベート IP アドレスを持つ新しいインスタンスを作成します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID:: プロジェクト ID
  • INSTANCE_ID:: インスタンス ID
  • VPC_NETWORK_NAME:: このインスタンスに使用する Virtual Private Cloud(VPC)ネットワークの名前を指定します。このネットワークに対して、プライベート サービス アクセスがすでに構成されている必要があります。
  • RANGE_NAME:: 省略可。指定すると、IP 範囲が割り当てられる範囲名が設定されます。範囲名は RFC-1035 に準拠し、1~63 文字にする必要があります。
  • AUTHORIZED_NETWORKS: パブリック IP 接続の場合は、インスタンスに接続できる承認済みネットワークからの接続を指定します。

ipv4Enabled パラメータには、インスタンスにパブリック IP アドレスを使用する場合は true を設定し、インスタンスにプライベート IP アドレスを使用する場合は false を設定します。

enablePrivatePathForGoogleCloudServices パラメータを true に設定すると、BigQuery などの他の Google Cloud サービスに、Cloud SQL 内のデータに対するアクセスが許可され、プライベート IP 接続を介してこのデータに対してクエリを実行できるようになります。このパラメータを false に設定すると、他の Google Cloud サービスは、プライベート IP 接続を介した Cloud SQL 内のデータへのアクセスができなくなります。

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID

リクエストの本文(JSON):

{
  "settings":
  {
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
      "allocatedIpRange": "RANGE_NAME"
      "authorizedNetworks": [AUTHORIZED_NETWORKS],
      
      "enablePrivatePathForGoogleCloudServices": true
      
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

REST v1beta4

プライベート IP アドレスを持つ新しいインスタンスを作成します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID:: プロジェクト ID
  • INSTANCE_ID:: インスタンス ID
  • VPC_NETWORK_NAME:: このインスタンスに使用する Virtual Private Cloud(VPC)ネットワークの名前を指定します。このネットワークに対して、プライベート サービス アクセスがすでに構成されている必要があります。
  • RANGE_NAME:: 省略可。指定すると、IP 範囲が割り当てられる範囲名が設定されます。範囲名は RFC-1035 に準拠し、1~63 文字にする必要があります。
  • AUTHORIZED_NETWORKS パブリック IP 接続の場合は、インスタンスに接続できる承認済みネットワークからの接続を指定します。

ipv4Enabled パラメータには、インスタンスにパブリック IP アドレスを使用する場合は true を設定し、インスタンスにプライベート IP アドレスを使用する場合は false を設定します。

enablePrivatePathForGoogleCloudServices パラメータを true に設定すると、BigQuery などの他の Google Cloud サービスに、Cloud SQL 内のデータに対するアクセスが許可され、プライベート IP 接続を介してこのデータに対してクエリを実行できるようになります。このパラメータを false に設定すると、他の Google Cloud サービスは、プライベート IP 接続を介した Cloud SQL 内のデータへのアクセスができなくなります。

HTTP メソッドと URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

リクエストの本文(JSON):

{
  "settings":
  {
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
      "allocatedIpRange": "RANGE_NAME"
      "authorizedNetworks": [AUTHORIZED_NETWORKS],
      
      "enablePrivatePathForGoogleCloudServices": true
      
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

プライベート IP を使用してインスタンスに接続する

プライベート サービス アクセスを使用して、同じ VPC ネットワーク内の Compute Engine または Google Kubernetes Engine(ここでは内部ソース)から、またはネットワーク外(外部ソース)から Cloud SQL インスタンスに接続します。

内部ソースから接続する

Compute Engine リソースで動作している Cloud SQL Auth Proxy など、Cloud SQL インスタンスと同じ Google Cloud プロジェクトのソースから接続するには、そのリソースが、Cloud SQL インスタンスに対してプライベート サービス アクセスが確立されているのと同じ VPC ネットワークに存在している必要があります。

App Engine スタンダード環境Cloud Run、または Cloud Run 関数などのサーバーレス ソースから接続する場合は、アプリケーションまたは関数は、Cloud SQL Auth Proxy を使用せずにサーバーレス VPC アクセスを介してインスタンスに直接接続します。

外部ソースから接続する

外部ネットワーク(オンプレミス ネットワークや VPC ネットワークなど)が Cloud SQL インスタンスが接続されている VPC ネットワークに接続されている場合は、Cloud VPN または Cloud Interconnect を使用して、外部ネットワークのクライアントからインスタンスに接続します。

外部ネットワークからの接続を許可するには、次の操作を行います。

  1. VPC ネットワークが外部ネットワークに、Cloud VPN トンネルまたは Dedicated Interconnect / Partner Interconnect 用 VLAN アタッチメントを使用して接続されていることを確認します。
  2. Cloud VPN トンネルと Cloud Interconnect アタッチメント(VLAN)を管理する Cloud Router の Border Gateway Protocol(BGP)セッションが、オンプレミス ネットワークから特定の接頭辞(宛先)を受信したことを確認します。

    デフォルト ルート(宛先 0.0.0.0/0)は、Cloud SQL VPC ネットワークにインポートできません。ネットワークに独自のローカルのデフォルト ルートがあるためです。Cloud SQL ピアリングが VPC ネットワークからカスタムルートをインポートするように構成されていても、宛先のローカルルートが使用されます。

  3. プライベート サービス接続によって生成されるピアリング接続を特定します。サービスに応じて、プライベート サービス接続が 1 つ以上の次のピアリング接続を作成する場合がありますが、必ずしもこれらがすべてではありません。
    • cloudsql-mysql-googleapis-com
    • cloudsql-postgres-googleapis-com
    • servicenetworking-googleapis-com
  4. すべてのピアリング接続を更新して、カスタムルートのエクスポートを有効にします。
  5. プライベート サービス接続に使用される割り振り範囲を特定します。
  6. Cloud VPN トンネルまたは Cloud Interconnect アタッチメント(VLAN)の BGP セッションを管理する Cloud Router の割り振り範囲に、Cloud Router のカスタム アドバタイズ モードを構成します。

Cloud Shell から接続する

Cloud Shell は、プライベート IP アドレスのみを持つ Cloud SQL インスタンスへの接続をサポートしていません。

RFC 1918 以外の IP アドレスから接続する

RFC 1918 により、内部で(つまり、組織内で)使用するために割り振られる IP アドレスが指定され、インターネット上ではルーティングされません。具体的には次のようなものがあります。

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

プライベート IP アドレスを使用して Cloud SQL インスタンスへ接続すると、RFC 1918 アドレス範囲が自動的に承認されます。これにより、すべてのプライベート クライアントがプロキシを経由せずにデータベースにアクセスできます。

RFC 1918 以外の IP アドレスから接続するには、インスタンスごとの IP 認可を設定して、RFC 1918 以外の IP アドレス範囲からのトラフィックを許可します。

たとえば、次のような gcloud コマンドを使用します。

gcloud sql instances patch INSTANCE_NAME \
--authorized-networks=192.88.99.0/24,11.0.0.0/24

Cloud SQL は、デフォルトでは VPC ネットワークから RFC 1918 以外のサブネット ルートを学習しません。RFC 1918 以外のルートをエクスポートするには、Cloud SQL へのネットワーク ピアリングを更新する必要があります。

gcloud compute networks peerings update cloudsql-postgres-googleapis-com \
--network=VPC_NETWORK_NAME \
--export-subnet-routes-with-public-ip \
--project=PROJECT_ID

    以下を置き換えます。

  • cloudsql-postgres-googleapis-com は、VPC ネットワーク ページのPrivate Service Connect 名です。

    ネットワークを選択し、[プライベート サービス接続] を探します。

  • VPC_NETWORK_NAME は VPC ネットワークの名前です。
  • PROJECT_ID は VPC ネットワークのプロジェクトの ID です。 共有 VPC を使用している場合は、ホスト プロジェクト ID を使用します。

IP アドレスの枯渇を軽減するには、限定公開で使用されるパブリック IP アドレスを使用します。

プライベートで使用されるパブリック IP アドレスから接続する

限定公開で使用されるパブリック IP アドレス範囲でインスタンスを構成する場合、ネットワークと Cloud SQL ネットワーク間のネットワーク ピアリングで export-subnet-routes-with-public-ip を有効にします。

gcloud compute networks peerings update cloudsql-postgres-googleapis-com \
--network=VPC_NETWORK_NAME \
--export-subnet-routes-with-public-ip \
--project=PROJECT_ID

    以下を置き換えます。

  • cloudsql-postgres-googleapis-com は、VPC ネットワーク ページのPrivate Service Connect 名です。

    ネットワークを選択し、[Private Service Connect] を探します。

  • VPC_NETWORK_NAME は VPC ネットワークの名前です。
  • PROJECT_ID は VPC ネットワークのプロジェクトの ID です。共有 VPC を使用している場合は、ホスト プロジェクト ID を使用します。

プライベートで使用されるパブリック IP アドレスで構成されたインスタンスに接続する

プライベートで利用されるパブリック IP アドレス範囲にインスタンスが構成されており、そのインスタンスに接続する場合は、ネットワークと Cloud SQL ネットワーク間のネットワーク ピアリングで import-subnet-routes-with-public-ip を有効にします。

gcloud compute networks peerings update cloudsql-postgres-googleapis-com \
--network=VPC_NETWORK_NAME \
--import-subnet-routes-with-public-ip \
--project=PROJECT_ID

    以下を置き換えます。

  • cloudsql-postgres-googleapis-com は、VPC ネットワーク ページのPrivate Service Connect 名です。

    ネットワークを選択し、[プライベート サービス接続] を探します。

  • VPC_NETWORK_NAME は VPC ネットワークの名前です。
  • PROJECT_ID は VPC ネットワークのプロジェクトの ID です。共有 VPC を使用している場合は、ホスト プロジェクト ID を使用します。

書き込みエンドポイントを使用して接続する

プライベート IP アドレスに加えて、SQL 接続文字列で書き込みエンドポイントを使用できます。書き込みエンドポイントは、現在のプライマリ インスタンスの IP アドレスに自動的に解決されるグローバル ドメイン名サービス(DNS)名です。書き込みエンドポイントを使用すると、リージョンが停止した場合にアプリケーション接続を変更する必要がなくなります。

レプリカのフェイルオーバーまたはスイッチオーバーが発生した場合、書き込みエンドポイントはインスタンスのプライベート IP アドレスの管理に役立ちます。この場合、書き込みエンドポイントを使用して、プライマリ インスタンスとして機能するインスタンスに接続します。

Cloud SQL が書き込みエンドポイントを作成する方法

Google Cloud プロジェクトで Cloud DNS API を有効にして、プライマリ Cloud SQL Enterprise Plus エディション インスタンスを作成インスタンスのレプリカを昇格、またはCloud SQL Enterprise エディションからインスタンスをアップグレードすると、Cloud SQL は書き込みエンドポイントを自動的に生成し、インスタンスに割り当てます。

インスタンスの書き込みエンドポイントの取得の詳細については、インスタンスの情報を表示するをご覧ください。

書き込みエンドポイントをインスタンスに割り当てる

Google Cloud プロジェクトで Cloud DNS API を有効にせずにインスタンスを作成、昇格、またはアップグレードした場合、Cloud SQL は書き込みエンドポイントをインスタンスに自動的に割り当てません。

Cloud SQL で書き込みエンドポイントを生成し、インスタンスに割り当てる手順は次のとおりです。

  1. Cloud DNS API を有効にします。

    Console

    1. Google Cloud Console の [API] ページに移動します。

      [API] に移動

    2. [Cloud DNS API] をクリックします。
    3. API を有効にします。

    gcloud

    1. 次のボタンをクリックして Cloud Shell を開きます。これにより、ブラウザから Google Cloud リソースにコマンドラインで直接アクセスできます。

      Cloud Shell を開く

    2. API を有効にするには、次の gcloud services enable コマンドを実行します。

      gcloud services enable dns.googleapis.com
  2. 高度な障害復旧が有効になっているレプリカを作成します。その結果、Cloud SQL は書き込みエンドポイントを生成し、インスタンスに割り当てます。

  3. 書き込みエンドポイントを取得するには、gcloud sql instances describe コマンドを使用します。
    gcloud sql instances describe INSTANCE_NAME | grep psaWriteEndpoint

    INSTANCE_NAME は、Cloud SQL インスタンスの名前に置き換えます。

トラブルシューティング

接続の既知の問題についてはトラブルシューティングを、自己診断については接続の問題のデバッグをご覧ください。

次のステップ