Private Service Connect を使用してインスタンスに接続する

このページでは、Private Service Connect を使用して Cloud SQL インスタンスに接続する方法について説明します。

異なるグループ、チーム、プロジェクト、組織に属する複数の Virtual Private Cloud ネットワークから Cloud SQL インスタンスに接続できます。Private Service Connect を使用して、プライマリ インスタンスまたはそのリードレプリカのいずれかに接続することもできます。

始める前に

Cloud SQL インスタンスでの Private Service Connect の使用のサポートは、gcloud CLI バージョン 416.0.0 以降で利用できます。

ユーザーロール

Cloud SQL インスタンスで Private Service Connect を使用するには、次のロールが必要です。

Cloud SQL インスタンスを作成する

Cloud SQL 管理者は、gcloud または API を使用して、Private Service Connect を有効にしたインスタンスを作成できます。

gcloud

次の例は、gcloud sql instances create コマンドを使用して、Private Service Connect が有効になっているインスタンスを作成する方法を示しています。

gcloud sql instances create INSTANCE_NAME \
--project=PROJECT_ID \
--region=REGION_NAME \
--enable-private-service-connect \
--allowed-psc-projects=ALLOWED_PROJECTS \
--availability-type=regional \
--no-assign-ip \
--tier=MACHINE_TYPE \
--database-version=DATABASE_VERSION \
--enable-bin-log

次の項目を置き換えます。

  • INSTANCE_NAME には、インスタンスの名前を指定します。
  • PROJECT_ID は、インスタンスが含まれる Google Cloud プロジェクトの ID に置き換えます。プロジェクト番号を使用して Google Cloud プロジェクトを指定することもできます。
  • REGION_NAME は、インスタンスのリージョンの名前に置き換えます。
  • ALLOWED_PROJECTSは、許可されているプロジェクト ID の CSV リストに置き換えます。このリストに含まれていないプロジェクトは、許可されたプロジェクトのリストから自動的に削除されます。新しいプロジェクトを追加しても既存のプロジェクトが許可されたままになるようにするには、既存のプロジェクトをリストに含めてください。

  • MACHINE_TYPE: インスタンスの目的のマシンタイプ。
  • DATABASE_VERSION は、インスタンスのデータベースのバージョン(MYSQL_8_0 など)に置き換えます。

次のフラグは必須です。

  • enable-private-service-connect: Private Service Connect エンドポイントからインスタンスへの接続を許可するインスタンスを作成します。
  • allowed-psc-projects: は、許可されているプロジェクト ID の CSV リストを指定します。ネットワーク管理者は、これらのプロジェクトの任意の VPC ネットワークからインスタンスのサービス アタッチメントへの Private Service Connect エンドポイントを作成できます。

    Cloud SQL 管理者は、Private Service Connect が有効になったインスタンスを作成または更新している場合にのみ、このフラグを設定できます。

  • no-assign-ip。インスタンスはプライベート IP アドレスを持つ必要があるため、このフラグを使用する必要があります。パブリック IP 接続はサポートされていません。

Terraform

Private Service Connect が有効になっているインスタンスを作成するには、google_sql_database_instance Terraform リソースを使用します。

resource "google_sql_database_instance" "default" {
  name             = "mysql-instance"
  region           = "us-central1"
  database_version = "MYSQL_8_0"
  settings {
    tier              = "db-f1-micro"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled            = true
      binary_log_enabled = true
    }
    ip_configuration {
      psc_config {
        psc_enabled               = true
        allowed_consumer_projects = []
      }
      ipv4_enabled = false
    }
  }
  deletion_protection = false # Set to "true" to prevent destruction of the resource
}

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. 次のコマンドを実行しています。プロンプトで「yes」と入力して、以前に Terraform 構成で適用されたリソースを削除します。

    terraform destroy

REST v1

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

  • PROJECT_ID: インスタンスが含まれる Google Cloud プロジェクトの ID。
  • INSTANCE_NAME: インスタンスの名前。
  • REGION_NAME: インスタンスのリージョンの名前。
  • ALLOWED_PROJECTS: 許可されているプロジェクト ID の CSV リスト。このリストに含まれていないプロジェクトは、許可されたプロジェクトのリストから自動的に削除されます。新しいプロジェクトを追加しても既存のプロジェクトが許可リストに保持されるようにするには、既存のプロジェクトをリストに含めてください。

  • 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": "MYSQL_8_0",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "REGIONAL",
    "backupConfiguration": {
      "binaryLogEnabled": true,
      "enabled": true,
      "kind": "sql#backupConfiguration",
      "startTime": "00:00"
    },
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

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

次のような 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"
}

次のフラグは必須です。

  • allowedConsumerProjects: 許可されているプロジェクト ID の CSV リストを指定します。ネットワーク管理者は、これらのプロジェクトの任意の VPC ネットワークからインスタンスのサービス アタッチメントへの Private Service Connect エンドポイントを作成できます。

    Cloud SQL 管理者は、Private Service Connect が有効になったインスタンスを作成または更新している場合にのみ、このフラグを設定できます。

  • pscEnabled: Private Service Connect エンドポイントからインスタンスへの接続を許可するインスタンスを作成します。

REST v1beta4

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

  • PROJECT_ID: インスタンスが含まれる Google Cloud プロジェクトの ID。
  • INSTANCE_NAME: インスタンスの名前。
  • REGION_NAME: インスタンスのリージョンの名前。
  • ALLOWED_PROJECTS: 許可されているプロジェクト ID の CSV リスト。このリストに含まれていないプロジェクトは、許可されたプロジェクトのリストから自動的に削除されます。新しいプロジェクトを追加しても既存のプロジェクトが許可リストに保持されるようにするには、既存のプロジェクトをリストに含めてください。

  • MACHINE_TYPE: インスタンスの目的のマシンタイプ。

HTTP メソッドと URL:

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

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

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "MYSQL_8_0",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "REGIONAL",
    "backupConfiguration": {
      "binaryLogEnabled": true,
      "enabled": true,
      "kind": "sql#backupConfiguration",
      "startTime": "00:00"
    },
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/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/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

次のフラグは必須です。

  • allowedConsumerProjects: 許可されているプロジェクト ID の CSV リストを指定します。ネットワーク管理者は、これらのプロジェクトの任意の VPC ネットワークからインスタンスのサービス アタッチメントへの Private Service Connect エンドポイントを作成できます。

    Cloud SQL 管理者は、Private Service Connect が有効になったインスタンスを作成または更新している場合にのみ、このフラグを設定できます。

  • pscEnabled: Private Service Connect エンドポイントからインスタンスへの接続を許可するインスタンスを作成します。

Cloud SQL インスタンスのリードレプリカを作成する

Cloud SQL 管理者は、gcloud または API を使用して、Private Service Connect を有効にしたインスタンスのリードレプリカを作成できます。

リードレプリカは、プライマリ インスタンスと同じリージョンに作成する必要があります。また、リードレプリカは、接続タイプが異なる別のインスタンスから複製することはできません。たとえば、Private Service Connect が有効になっているインスタンスは、別の Private Service Connect インスタンスからのみ複製できます。パブリック IP 接続をサポートするインスタンスから、またはプライベート サービス アクセスと連携するように構成されているインスタンスからは複製できません。

gcloud

次の例は、gcloud sql instances create コマンドを使用してインスタンスのリードレプリカを作成する方法を示しています。

        gcloud sql instances create REPLICA_INSTANCE_NAME \
        --master-instance-name=PRIMARY_INSTANCE_NAME \
        --project=PROJECT_ID \
        --region=REGION_NAME \
        --enable-private-service-connect \
        --allowed-psc-projects=ALLOWED_PROJECTS \
        --availability-type=regional \
        --no-assign-ip

次の項目を置き換えます。

  • REPLICA_INSTANCE_NAME は、レプリカ インスタンスの名前に置き換えます
  • PRIMARY_INSTANCE_NAME は、プライマリ インスタンスの名前に置き換えます
  • PROJECT_ID は、レプリカ インスタンスが含まれる Google Cloud プロジェクトの ID に置き換えます。プロジェクト番号を使用して Google Cloud プロジェクトを指定することもできます。
  • REGION_NAME は、レプリカ インスタンスのリージョンの名前に置き換えます
  • ALLOWED_PROJECTSは、許可されているプロジェクト ID の CSV リストに置き換えます。これらのプロジェクトは、Private Service Connect を使用するようにすでに構成されているプロジェクトをオーバーライドします。

    このリストに含まれていないプロジェクトは、許可されたプロジェクトのリストから自動的に削除されます。新しいプロジェクトを追加しても既存のプロジェクトが許可リストに保持されるようにするには、既存のプロジェクトをリストに含めてください。

Private Service Connect を有効にして Cloud SQL インスタンスを作成するのと同様に、このインスタンスのリードレプリカを作成する場合は、enable-private-service-connect フラグ、allowed-psc-projects フラグ、no-assign-ip フラグが必要です。

プライマリ インスタンスで許可されているプロジェクトは、レプリカにはコピーされません。レプリカで許可されているプロジェクト ID の CSV リストを指定するには、allowed-psc-projects フラグを使用する必要があります。また、レプリカごとに Private Service Connect エンドポイントを作成する必要があります。Cloud SQL Auth Proxy または Cloud SQL 言語コネクタ を使用している場合は、レプリカの DNS ゾーンと DNS レコードを作成する必要があります。

REST v1

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

  • PROJECT_ID: レプリカ インスタンスが含まれる Google Cloud プロジェクトの ID。
  • PRIMARY_INSTANCE_NAME: プライマリ インスタンスの名前。
  • REPLICA_INSTANCE_NAME: レプリカ インスタンスの名前。
  • REGION_NAME: レプリカ インスタンスのリージョンの名前。
  • MACHINE_TYPE: インスタンスの目的のマシンタイプ。
  • ALLOWED_PROJECTS: 許可されているプロジェクト ID の CSV リスト。これらのプロジェクトは、Private Service Connect を使用するようにすでに構成されているプロジェクトをオーバーライドします。

    このリストに含まれていないプロジェクトは、許可されたプロジェクトのリストから自動的に削除されます。新しいプロジェクトを追加しても既存のプロジェクトが許可リストに保持されるようにするには、既存のプロジェクトをリストに含めてください。

HTTP メソッドと URL:

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

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

{
  "masterInstanceName": "PRIMARY_INSTANCE_NAME",
  "project": "PROJECT_ID",
  "databaseVersion": "MYSQL_8_0",
  "name": "REPLICA_INSTANCE_NAME",
  "region": "REGION_NAME",
  "kind": "sql#instance",
  "settings":
  {
    "tier": "MACHINE_TYPE",
    "settingsVersion": 0,
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [ALLOWED_PROJECTS],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "ASYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/REPLICA_INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "CREATE_REPLICA",
  "name": "OPERATION_ID",
  "targetId": "REPLICA_INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Private Service Connect を有効にして Cloud SQL インスタンスを作成するのと同様に、このインスタンスのリードレプリカを作成する場合は、allowedConsumerProjects フラグと pscEnabled フラグが必要です。

プライマリ インスタンスで許可されているプロジェクトは、レプリカにはコピーされません。レプリカで許可されているプロジェクト ID の CSV リストを指定するには、allowedConsumerProjects フラグを使用する必要があります。また、レプリカごとに Private Service Connect エンドポイントを作成する必要があります。Cloud SQL Auth Proxy または Cloud SQL 言語コネクタ を使用している場合は、レプリカの DNS ゾーンと DNS レコードを作成する必要があります。

REST v1beta4

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

  • PROJECT_ID: レプリカ インスタンスが含まれる Google Cloud プロジェクトの ID。
  • PRIMARY_INSTANCE_NAME: プライマリ インスタンスの名前。
  • REPLICA_INSTANCE_NAME: レプリカ インスタンスの名前。
  • REGION_NAME: レプリカ インスタンスのリージョンの名前。
  • MACHINE_TYPE: インスタンスの目的のマシンタイプ。
  • ALLOWED_PROJECTS: 許可されているプロジェクト ID の CSV リスト。これらのプロジェクトは、Private Service Connect を使用するようにすでに構成されているプロジェクトをオーバーライドします。

    このリストに含まれていないプロジェクトは、許可されたプロジェクトのリストから自動的に削除されます。新しいプロジェクトを追加しても既存のプロジェクトが許可リストに保持されるようにするには、既存のプロジェクトをリストに含めてください。

HTTP メソッドと URL:

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

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

{
  "masterInstanceName": "PRIMARY_INSTANCE_NAME",
  "project": "PROJECT_ID",
  "databaseVersion": "MYSQL_8_0",
  "name": "REPLICA_INSTANCE_NAME",
  "region": "REGION_NAME",
  "kind": "sql#instance",
  "settings":
  {
    "tier": "MACHINE_TYPE",
    "settingsVersion": 0,
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [ALLOWED_PROJECTS],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "ASYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "CREATE_REPLICA",
  "name": "OPERATION_ID",
  "targetId": "REPLICA_INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Private Service Connect を有効にして Cloud SQL インスタンスを作成するのと同様に、このインスタンスのリードレプリカを作成する場合は、allowedConsumerProjects フラグと pscEnabled フラグが必要です。

プライマリ インスタンスで許可されているプロジェクトは、レプリカにはコピーされません。レプリカで許可されているプロジェクト ID の CSV リストを指定するには、allowedConsumerProjects フラグを使用する必要があります。また、レプリカごとに Private Service Connect エンドポイントを作成する必要があります。Cloud SQL Auth Proxy または Cloud SQL 言語コネクタ を使用している場合は、レプリカの DNS ゾーンと DNS レコードを作成する必要があります。

Cloud SQL インスタンスのクローンを作成する

Cloud SQL 管理者は、gcloud または API を使用して、Private Service Connect を有効にした Cloud SQL インスタンスのクローンを作成できます。

gcloud

次の例は、gcloud sql instances clone コマンドを使用してインスタンスのクローンを作成する方法を示しています。

        gcloud sql instances clone SOURCE_INSTANCE_NAME DESTINATION_INSTANCE_NAME \
        --project=PROJECT_ID

次の項目を置き換えます。

  • SOURCE_INSTANCE_NAME は、クローンを作成する Cloud SQL インスタンスの名前に置き換えます
  • DESTINATION_INSTANCE_NAME は、クローン インスタンスの名前に置き換えます
  • PROJECT_ID は、ソース インスタンスと宛先インスタンスを含む Google Cloud プロジェクトの ID に置き換えます

Private Service Connect に関連するフラグ(
enable-private-service-connectallowed-psc-projectsno-assign-ip フラグなど)は指定できません。クローニング インスタンスは、ソース インスタンスのすべての Private Service Connect 設定を継承します。

gcloud sql instances clone コマンドを実行しているユーザーまたはサービス アカウントには、cloudsql.instances.clone 権限が必要です。gcloud CLI コマンドを実行するために必要な権限の詳細については、Cloud SQL の権限をご覧ください。

REST v1

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

  • PROJECT_ID: ソース インスタンスと宛先インスタンスを含む Google Cloud プロジェクトの ID
  • SOURCE_INSTANCE_NAME: クローンを作成する Cloud SQL インスタンスの名前
  • DESTINATION_INSTANCE_NAME: クローン インスタンスの名前

HTTP メソッドと URL:

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

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

{
  "cloneContext":
  {
    "destinationInstanceName": "DESTINATION_INSTANCE_NAME"
  }
}

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

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

Private Service Connect に関連するフラグ(
allowedConsumerProjects フラグと pscEnabled フラグ)は指定できません。クローニング インスタンスは、ソース インスタンスのすべての Private Service Connect 設定を継承します。

instances.clone API メソッドを使用するユーザーまたはサービス アカウントには、cloudsql.instances.clone 権限が必要です。API メソッドの使用に必要な権限の詳細については、Cloud SQL の権限をご覧ください。

REST v1beta4

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

  • PROJECT_ID: ソース インスタンスと宛先インスタンスを含む Google Cloud プロジェクトの ID
  • SOURCE_INSTANCE_NAME: クローンを作成する Cloud SQL インスタンスの名前
  • DESTINATION_INSTANCE_NAME: クローン インスタンスの名前

HTTP メソッドと URL:

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

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

{
  "cloneContext":
  {
    "destinationInstanceName": "DESTINATION_INSTANCE_NAME"
  }
}

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

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

Private Service Connect に関連するフラグ(
allowedConsumerProjects フラグと pscEnabled フラグ)は指定できません。クローニング インスタンスは、ソース インスタンスのすべての Private Service Connect 設定を継承します。クローンとして作成したインスタンスごとに、Private Service Connect エンドポイント、DNS ゾーン、DNS レコードを作成する必要があります。

instances.clone API メソッドを使用するユーザーまたはサービス アカウントには、cloudsql.instances.clone 権限が必要です。API メソッドの使用に必要な権限の詳細については、Cloud SQL の権限をご覧ください。

要約情報を表示する

Cloud SQL 管理者は、Google Cloud コンソール、gcloud、または API を使用して、Private Service Connect が有効になっている Cloud SQL インスタンスの要約情報を表示できます。

コンソール

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

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

    Private Service Connect が有効になっている Cloud SQL インスタンスについて、次の情報が表示されます。

    • 内部接続方式: インスタンスへの接続に Private Service Connect とプライベート サービス アクセスのどちらを使用するか
    • プライベート IP アドレス: インスタンスのサービス アタッチメントに接続する VPC ネットワーク内の Private Service Connect エンドポイントの IP アドレス
    • DNS 名: インスタンスの DNS 名
  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。

    [このインスタンスに接続] カードには、Private Service Connect が有効になっている Cloud SQL インスタンスに関する次の情報が表示されます:

    • プライベート IP 接続: インスタンスにプライベート IP アドレスが必要なため、ステータスが [有効] になっています
    • 許可されているプロジェクト: これらのプロジェクトでは、Private Service Connect エンドポイントからインスタンスへの接続が許可されます。
    • サービス アタッチメント: インスタンスのサービス アタッチメント
    • パブリック IP 接続: パブリック IP 接続はサポートされていないため、ステータスは [無効] になります
  3. インスタンスの接続情報を表示するには、[接続] タブをクリックします。

  4. [ネットワーキング] タブをクリックします。インスタンスに関する次の情報が表示されます。

    • [プライベート IP] チェックボックスが選択されているものの、無効になっています。インスタンスにはプライベート IP アドレスが必要です。この設定は変更できません。
    • インスタンスで許可されているプロジェクト。
    • [パブリック IP] チェックボックスが選択されているものの、無効になっています。
    • インスタンスでこの機能がサポートされていない Private Service Connect が使用されているため、[承認済みネットワーク] フィールドは無効になっています。
  5. [接続] タブの詳細については、Cloud SQL 接続についてをご覧ください。

gcloud

次の例は、gcloud sql instances describe コマンドを使用して、Private Service Connect が有効になっているインスタンスの概要情報を表示する方法を示しています。

        gcloud sql instances describe INSTANCE_NAME \
        --project=PROJECT_ID

次の項目を置き換えます。

  • INSTANCE_NAME は、VPC ネットワーク内の Private Service Connect エンドポイントが接続できる Cloud SQL インスタンスの名前に置き換えます。
  • PROJECT_ID は、インスタンスが含まれる Google Cloud プロジェクトの ID に置き換えます

このコマンドを実行した場合の出力例を次に示します。

        gcloud sql instances describe myinstance \
        --project=12345

        ...
        dnsName: mydnsname
        ...
        pscServiceAttachmentLink: projects/myproject/regions/myregion/serviceAttachments/myserviceattachment
        ...
        settings:
          ...
          ipConfiguration:
          ipv4Enabled: false
          pscConfig:
            allowedConsumerProjects:
              - projects/23456
              - projects/34567
            pscEnabled: true

Private Service Connect が有効になっているインスタンスには、次のフィールドがあります。

  • dnsName:: インスタンスの DNS 名。ネットワーク管理者はこの名前で DNS レコードを作成し、そのレコードが Private Service Connect エンドポイントの IP アドレスを指すようにすることをおすすめします。また、Cloud SQL インスタンス ユーザーは、この名前を使用してインスタンスに接続することをおすすめします。
  • pscServiceAttachmentLink:: インスタンスのサービス アタッチメントを指す URI。ネットワーク管理者が Private Service Connect エンドポイントを作成するには、この URI を使用します。
  • allowedConsumerProjects:: インスタンスに対して許可されているプロジェクト ID のリスト。ネットワーク管理者は、これらのプロジェクトの任意の VPC ネットワークからインスタンスのサービス アタッチメントへの Private Service Connect エンドポイントを作成できます。
  • pscEnabled:: インスタンスで Private Service Connect が有効になっているかどうか。

REST v1

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

  • PROJECT_ID: インスタンスが含まれる Google Cloud プロジェクトの ID
  • INSTANCE_NAME: VPC ネットワーク内の Private Service Connect エンドポイントが接続できる Cloud SQL インスタンスの名前

HTTP メソッドと URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

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

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

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_8_0",
  "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"
        ],
        "pscEnabled": true
      },
      "ipv4Enabled": false
    },
  ...
  "createTime": "2023-06-14T18:48:34.975Z",
  "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE",
  "pscServiceAttachmentLink": "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_ID",
  "dnsName": "DNS_NAME"
}

Private Service Connect が有効になっているインスタンスには、次のフィールドがあります。

  • allowedConsumerProjects:: インスタンスに対して許可されているプロジェクト ID のリスト。ネットワーク管理者は、これらのプロジェクトの任意の VPC ネットワークからインスタンスのサービス アタッチメントへの Private Service Connect エンドポイントを作成できます。
  • pscEnabled:: インスタンスで Private Service Connect が有効になっているかどうか。
  • pscServiceAttachmentLink:: インスタンスのサービス アタッチメントを指す URI。ネットワーク管理者が Private Service Connect エンドポイントを作成するには、この URI を使用します。
  • dnsName:: インスタンスの DNS 名。ネットワーク管理者はこの名前で DNS レコードを作成し、そのレコードが Private Service Connect エンドポイントの IP アドレスを指すようにすることをおすすめします。また、Cloud SQL インスタンス ユーザーは、この名前を使用してインスタンスに接続することをおすすめします。

このタスクで基礎となる REST API リクエストがどのように作成されるかについては、API Explorer の instances:get ページをご覧ください。

REST v1beta4

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

  • PROJECT_ID: インスタンスが含まれる Google Cloud プロジェクトの ID
  • INSTANCE_NAME: VPC ネットワーク内の Private Service Connect エンドポイントが接続できる Cloud SQL インスタンスの名前

HTTP メソッドと URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

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

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

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_8_0",
  "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"
        ],
        "pscEnabled": true
      },
      "ipv4Enabled": false
    },
  ...
  "createTime": "2023-06-14T18:48:34.975Z",
  "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE",
  "pscServiceAttachmentLink": "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_ID",
  "dnsName": "DNS_NAME"
}

Private Service Connect が有効になっているインスタンスには、次のフィールドがあります。

  • allowedConsumerProjects:: インスタンスに対して許可されているプロジェクト ID のリスト。ネットワーク管理者は、これらのプロジェクトの任意の VPC ネットワークからインスタンスのサービス アタッチメントへの Private Service Connect エンドポイントを作成できます。
  • pscEnabled:: インスタンスで Private Service Connect が有効になっているかどうか。
  • pscServiceAttachmentLink:: インスタンスのサービス アタッチメントを指す URI。ネットワーク管理者が Private Service Connect エンドポイントを作成するには、この URI を使用します。
  • dnsName:: インスタンスの DNS 名。ネットワーク管理者はこの名前で DNS レコードを作成し、そのレコードが Private Service Connect エンドポイントの IP アドレスを指すようにすることをおすすめします。また、Cloud SQL インスタンス ユーザーは、この名前を使用してインスタンスに接続することをおすすめします。
このタスクで基礎となる REST API リクエストがどのように作成されるかについては、API Explorer の instances:get ページをご覧ください。

Cloud SQL インスタンスを更新する

制限セクションに記載されている項目とは別に、Cloud SQL 管理者は gcloud または API を使用して Private Service Connect が有効になっているインスタンスを更新できます。

たとえば、管理者はインスタンスに関連付けられたプロジェクトを次の目的で更新できます。

  • Private Service Connect エンドポイントから Cloud SQL インスタンスへの接続を許可する。
  • 許可されたプロジェクトのリストからプロジェクトを削除する。削除されたプロジェクトでは、既存の Private Service Connect エンドポイントへの接続は引き続き機能しますが、新しいエンドポイントは受け入れられません。

gcloud

Private Service Connect の使用が許可されているプロジェクトを更新するには、gcloud sql instances patch コマンドを使用します。

        gcloud sql instances patch INSTANCE_NAME \
        --project=PROJECT_ID \
        --allowed-psc-projects=ALLOWED_PROJECTS

次の項目を置き換えます。

  • INSTANCE_NAME は、VPC ネットワーク内の Private Service Connect エンドポイントが接続できる Cloud SQL インスタンスの名前に置き換えます。
  • PROJECT_ID は、インスタンスが含まれる Google Cloud プロジェクトの ID に置き換えます。プロジェクト番号を使用して Google Cloud プロジェクトを指定することもできます。
  • ALLOWED_PROJECTSは、許可されているプロジェクト ID の CSV リストに置き換えます。これらのプロジェクトは、Private Service Connect を使用するようにすでに構成されているプロジェクトをオーバーライドします。

    このリストに含まれていないプロジェクトは、許可されたプロジェクトのリストから自動的に削除されます。新しいプロジェクトを追加しても既存のプロジェクトが許可リストに保持されるようにするには、既存のプロジェクトをリストに含めてください。

次の例では、2 つのプロジェクト(9876587654)が Private Service Connect エンドポイントから 12345 プロジェクトに含まれる myinstance Cloud SQL インスタンスに接続することを許可します。

        gcloud sql instances patch myinstance \
        --project=12345 \
        --allowed-psc-projects='98765','87654'

プロジェクトで Private Service Connect を使用できないようにするために、許可されたプロジェクトのリストからプロジェクトを削除するには、gcloud sql instances patch コマンドとオプションの --clear-allowed-psc-projects フラグを使用します。

        gcloud sql instances patch INSTANCE_NAME \
        --project=PROJECT_ID \
        --clear-allowed-psc-projects

このフラグは、誤ってプロジェクトが許可リストに登録されないようにするのに役立ちます。

REST v1

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

  • PROJECT_ID: VPC ネットワーク内の Private Service Connect エンドポイントが接続できるインスタンスを含む Google Cloud プロジェクトの ID。
  • INSTANCE_NAME: Cloud SQL インスタンスの名前。
  • ALLOWED_PROJECTS: 許可されているプロジェクト ID の CSV リスト。これらのプロジェクトは、Private Service Connect を使用するようにすでに構成されているプロジェクトをオーバーライドします。

    このリストに含まれていないプロジェクトは、許可されたプロジェクトのリストから自動的に削除されます。新しいプロジェクトを追加しても既存のプロジェクトが許可リストに保持されるようにするには、既存のプロジェクトをリストに含めてください。

許可されたプロジェクトのリストをクリアして、すべてのプロジェクトで Private Service Connect を使用できないようにするには、オプションの clear-allowed-psc-projects フラグを使用します。このフラグは、誤ってプロジェクトが許可リストに登録されないようにするのに役立ちます。

HTTP メソッドと URL:

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

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

{
  "kind": "sql#instance",
  "name": "INSTANCE_NAME",
  "project": "PROJECT_ID",
  "settings": {
    "ipConfiguration": {
      "pscConfig": {
        "allowedConsumerProjects": [ALLOWED_PROJECTS]
      }
    },
    "kind": "sql#settings"
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

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

  • PROJECT_ID: VPC ネットワーク内の Private Service Connect エンドポイントが接続できるインスタンスを含む Google Cloud プロジェクトの ID。
  • INSTANCE_NAME: Cloud SQL インスタンスの名前。
  • ALLOWED_PROJECTS: 許可されているプロジェクト ID の CSV リスト。これらのプロジェクトは、Private Service Connect を使用するようにすでに構成されているプロジェクトをオーバーライドします。

    このリストに含まれていないプロジェクトは、許可されたプロジェクトのリストから自動的に削除されます。新しいプロジェクトを追加しても既存のプロジェクトが許可リストに保持されるようにするには、既存のプロジェクトをリストに含めてください。

許可されたプロジェクトのリストをクリアして、すべてのプロジェクトで Private Service Connect を使用できないようにするには、オプションの clear-allowed-psc-projects フラグを使用します。このフラグは、誤ってプロジェクトが許可リストに登録されないようにするのに役立ちます。

HTTP メソッドと URL:

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

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

{
  "kind": "sql#instance",
  "name": "INSTANCE_NAME",
  "project": "PROJECT_ID",
  "settings": {
    "ipConfiguration": {
      "pscConfig": {
        "allowedConsumerProjects": [ALLOWED_PROJECTS]
      }
    },
    "kind": "sql#settings"
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Cloud SQL インスタンスを削除する

Cloud SQL 管理者は、gcloud または API を使用して、Private Service Connect を有効にした Cloud SQL インスタンスを削除できます。

gcloud

次の例は、gcloud sql instances delete コマンドを使用してインスタンスを削除する方法を示しています。

        gcloud sql instances delete INSTANCE_NAME \
        --project=PROJECT_ID

次の項目を置き換えます。

  • INSTANCE_NAME は、削除する Cloud SQL インスタンスの名前に置き換えます
  • PROJECT_ID は、インスタンスが含まれる Google Cloud プロジェクトの ID に置き換えます

インスタンスが削除されると、次のアクションが発生します。

  • サービス アタッチメントが自動的に削除されます。ただし、サービス アタッチメントを指す Private Service Connect エンドポイントは自動的に削除されることはありません。エンドポイントに関連付けられている転送ルールを一覧表示することで、ネットワーク管理者は、ルールのステータスが CLOSED であることを確認できます。この管理者はステータスを受け取った後、エンドポイントを削除できるようになります。
  • Cloud SQL インスタンス ユーザーは、エンドポイントへの接続がタイムアウトすることを確認できます。

REST v1

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

  • PROJECT_ID: 削除するインスタンスが含まれている Google Cloud プロジェクトの ID
  • INSTANCE_NAME: インスタンスの名前

HTTP メソッドと URL:

DELETE https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-15T00:10:22.078Z",
  "operationType": "DELETE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

インスタンスが削除されると、次のアクションが発生します。

  • サービス アタッチメントが自動的に削除されます。ただし、サービス アタッチメントを指す Private Service Connect エンドポイントは自動的に削除されることはありません。エンドポイントに関連付けられている転送ルールを一覧表示することで、ネットワーク管理者は、ルールのステータスが CLOSED であることを確認できます。この管理者はステータスを受け取った後、エンドポイントを削除できるようになります。
  • Cloud SQL インスタンス ユーザーは、エンドポイントへの接続がタイムアウトすることを確認できます。

注: 追加費用が発生しないように、対応する DNS ゾーンと DNS レコードも削除することをおすすめします。

REST v1beta4

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

  • PROJECT_ID: 削除するインスタンスが含まれている Google Cloud プロジェクトの ID
  • INSTANCE_NAME: インスタンスの名前

HTTP メソッドと URL:

DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-15T00:10:22.078Z",
  "operationType": "DELETE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

インスタンスが削除されると、次のアクションが発生します。

  • サービス アタッチメントが自動的に削除されます。ただし、サービス アタッチメントを指す Private Service Connect エンドポイントは自動的に削除されることはありません。エンドポイントに関連付けられている転送ルールを一覧表示することで、ネットワーク管理者は、ルールのステータスが CLOSED であることを確認できます。この管理者はステータスを受け取った後、エンドポイントを削除できるようになります。
  • Cloud SQL インスタンス ユーザーは、エンドポイントへの接続がタイムアウトすることを確認できます。

サービス アタッチメントを取得する

Cloud SQL 管理者が Private Service Connect が有効になっている Cloud SQL インスタンスを作成すると、管理者はサービス アタッチメント URI を取得できます。ネットワーク管理者が Private Service Connect エンドポイントを作成するには、この URI が必要です。

gcloud

次の例は、gcloud sql instances describe コマンドを使用して、Private Service Connect が有効になっているインスタンスの概要情報を表示する方法を示しています。

        gcloud sql instances describe INSTANCE_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

出力には、pscServiceAttachmentLink フィールドが含まれます。このフィールドには、インスタンスのサービス アタッチメントを指し示す URI が表示されます。ネットワーク管理者が Private Service Connect エンドポイントを作成するには、この URI を使用します。

Terraform

サービス アタッチメント URI を取得するには、google_compute_address Terraform リソースを使用します。

resource "google_compute_address" "default" {
  name         = "psc-compute-address-${google_sql_database_instance.default.name}"
  region       = "us-central1"
  address_type = "INTERNAL"
  subnetwork   = "default"     # Replace value with the name of the subnet here.
  address      = "10.128.0.43" # Replace value with the IP address to reserve.
}

data "google_sql_database_instance" "default" {
  name = resource.google_sql_database_instance.default.name
}

resource "google_compute_forwarding_rule" "default" {
  name                  = "psc-forwarding-rule-${google_sql_database_instance.default.name}"
  region                = "us-central1"
  network               = "default"
  ip_address            = google_compute_address.default.self_link
  load_balancing_scheme = ""
  target                = data.google_sql_database_instance.default.psc_service_attachment_link
}

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. 次のコマンドを実行しています。プロンプトで「yes」と入力して、以前に Terraform 構成で適用されたリソースを削除します。

    terraform destroy

Private Service Connect エンドポイントを作成する

ネットワーク管理者は、サブネットから IP アドレスを割り振り、そのアドレスを使用する Private Service Connect エンドポイントを作成できます。

Cloud SQL インスタンスへのエンドポイントを作成するには、ネットワーク管理者がサービス アタッチメント URI と、そのインスタンスに対して許可リストに登録されたプロジェクトを持っている必要がありますです。

gcloud

  1. gcloud compute addresses create コマンドを使用して、Private Service Connect エンドポイントのプライベート IP アドレスを予約します。

            gcloud compute addresses create ADDRESS_NAME \
            --project=PROJECT_ID \
            --region=REGION_NAME \
            --subnet=SUBNET_NAME \
            --addresses=PRIVATE_IP_ADDRESS

    次の項目を置き換えます。

    • ADDRESS_NAME は、プライベート IP アドレスの名前に置き換えます。
    • PROJECT_ID は、エンドポイントの Google Cloud プロジェクトの ID に置き換えます。
    • REGION_NAME は、エンドポイントのリージョンの名前に置き換えます。
    • SUBNET_NAME は、IP アドレスのサブネットの名前に置き換えます。
    • PRIVATE_IP_ADDRESS は、予約する IP アドレスに置き換えます。この IP アドレスは、サブネットのプライマリ IP 範囲内にする必要があります。

    IP アドレスは RFC 1918 アドレスである必要はありません。RFC 1918 以外の範囲を持つサブネットを指定できます。

  2. gcloud compute addresses list コマンドを使用して、IP アドレスが予約されていることを確認します。

            gcloud compute addresses list ADDRESS_NAME \
            --project=PROJECT_ID
  3. IP アドレスに RESERVED ステータスが表示されていることを確認します。
  4. gcloud compute forwarding-rules create コマンドを使用して Private Service Connect エンドポイントを作成し、Cloud SQL サービス アタッチメントを指し示すように設定します。

            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

    次の項目を置き換えます。

    • ENDPOINT_NAME は、エンドポイントの名前に置き換えます
    • NETWORK_NAME はエンドポイントの VPC ネットワークの名前に置き換えます。
    • SERVICE_ATTACHMENT_URI はサービス アタッチメントの URI に置き換えます
  5. gcloud compute forwarding-rules describe コマンドを使用して、そのエンドポイントがサービス アタッチメントで受け入れられることを確認します。

            gcloud compute forwarding-rules describe ENDPOINT_NAME \
            --project=PROJECT_ID \
            --region=REGION_NAME
  6. pscConnectionStatus フィールドに ACCEPTED ステータスが表示されていることを確認します。このステータスは、エンドポイントがサービス アタッチメントに接続できることを示します。

Private Service Connect エンドポイントを一覧表示する

ネットワーク管理者は、すべての Private Service Connect エンドポイントとそのステータスを一覧表示できます。

gcloud

gcloud compute forwarding-rules list コマンドを使用して、すべてのエンドポイントとそのステータスを一覧表示します。

        gcloud compute forwarding-rules list PROJECT_ID \
        --region=REGION_NAME \
        --filter=pscConnectionStatus=STATUS_NAME

次の項目を置き換えます。

  • PROJECT_ID は、エンドポイントが含まれる Google Cloud プロジェクトの ID に置き換えます。
  • REGION_NAME は、エンドポイントのリージョンの名前に置き換えます。
  • STATUS_NAME は、エンドポイントのステータスの名前に置き換えます。エンドポイントが ACCEPTEDREJECTED、または CLOSED のステータスを持つ場合、サービス アタッチメントがエンドポイントからの接続を受け入れ、拒否、またはクローズすることを示します。

Private Service Connect エンドポイントを削除する

ネットワーク管理者は、Private Service Connect エンドポイントと、そのエンドポイントに予約されている IP アドレスを削除できます。

gcloud

  1. gcloud compute forwarding-rules delete コマンドを使用して、エンドポイントを削除します。

            gcloud compute forwarding-rules delete ENDPOINT_NAME \
            --project=PROJECT_ID \
            --region=REGION_NAME

    次の項目を置き換えます。

    • ENDPOINT_NAME は、エンドポイントの名前に置き換えます
    • PROJECT_ID は、エンドポイントが含まれる Google Cloud プロジェクトの ID に置き換えます
    • REGION_NAME は、エンドポイントのリージョンの名前に置き換えます
  2. gcloud compute addresses delete コマンドを使用して、エンドポイント用に予約された IP アドレスを解放します。

            gcloud compute addresses delete ADDRESS_NAME \
            --project=PROJECT_ID \
            --region=REGION_NAME

    ADDRESS_NAME は、IP アドレスの名前に置き換えます。

Cloud SQL インスタンスに接続する

プライベート IP アドレス、DNS レコード、Cloud SQL Auth Proxy、または他の Google Cloud アプリケーションを使用すると、Private Service Connect が有効になっている Cloud SQL インスタンスに接続できます。

DNS マネージド ゾーンと DNS レコードを構成する

Cloud SQL では DNS レコードは自動的には作成されません。代わりに、インスタンスのルックアップ API レスポンスから推奨される DNS 名から提供されます。対応する VPC ネットワークの限定公開 DNS ゾーンに DNS レコードを作成することを強くおすすめします。こうすることで、Cloud SQL Auth Proxy を使用して、異なるネットワークからでも一貫した方法で接続できます。

gcloud

  1. Cloud SQL 管理者は、gcloud sql instances describe コマンドを使用して、Cloud SQL インスタンスの概要情報(インスタンスの DNS 名など)を表示します。

            gcloud sql instances describe INSTANCE_NAME \
            --project=PROJECT_ID

    次の項目を置き換えます。

    • INSTANCE_NAME は、Cloud SQL インスタンスの名前に置き換えます
    • PROJECT_ID は、インスタンスが含まれる Google Cloud プロジェクトの ID に置き換えます
  2. DNS 名が表示されていることを確認します。この名前には、次のようなパターンがあります: INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.。DNS 名の例は 1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog. です。
    注: DNS 名は常にピリオド(.)で終わります。
  3. DNS 管理者として、gcloud dns managed-zones create コマンドを使用して限定公開 DNS ゾーンを作成します。このゾーンは、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: REGION_NAME.sql.goog.(ゾーンのリージョン名が REGION_NAME である場合)などのゾーンの DNS 名に置き換えます。
      注: DNS 名は常にピリオド(.)で終わります。
    • NETWORK_NAME は VPC ネットワークの名前に置き換えます
  4. Private Service Connect エンドポイントを作成したら、
    gcloud dns record-sets create コマンドを使用してゾーンに DNS レコードを作成します。

            gcloud dns record-sets create DNS_NAME \
            --project=PROJECT_ID \
            --type=RRSET_TYPE \
            --rrdatas=RR_DATA \
            --zone=ZONE_NAME

    次の項目を置き換えます。

    • DNS_NAME は、前の手順で取得した DNS 名に置き換えます。
    • RRSET_TYPE は、DNS レコードセットのリソース レコードタイプ(例: A)に置き換えます。
    • RR_DATA は、Private Service Connect エンドポイントに割り振られた IP アドレス(例: 198.51.100.5)に割り振られた IP アドレスに置き換えます。rrdata1 rrdata2 rrdata3 などの複数の値を入力することもできます(例: 10.1.2.3 10.2.3.4 10.3.4.5)。

DNS レコードを使用して直接接続する

DNS レコードを使用して Cloud SQL インスタンスに接続する前に、次のアクションを完了する必要があります。

  1. ネットワーク管理者は Private Service Connect エンドポイントを作成する必要があります。
  2. インスタンスのサービス アタッチメントは、エンドポイントを受け入れる必要があります。ネットワーク管理者は、エンドポイントのステータスをチェックして、ステータスが ACCEPTED であることを確認できます。
  3. DNS 管理者は DNS マネージド ゾーンと DNS レコードを構成する必要があります。

これらの条件が満たされると、DNS 名を使用してインスタンスにアクセスできるようになります。このインスタンスには、エンドポイントが作成された任意の VPC ネットワークからアクセスできます。

gcloud

  1. ネットワーク管理者として、gcloud compute addresses describe コマンドを使用して Private Service Connect エンドポイントの DNS レコードを取得します。

            gcloud compute addresses describe DNS_RECORD \
            --project=PROJECT_ID \
            --region=REGION_NAME

    次の項目を置き換えます。

    • DNS_RECORD は、エンドポイントの DNS レコードで置き換えます
    • PROJECT_ID は、エンドポイントが含まれる Google Cloud プロジェクトの ID に置き換えます
    • REGION_NAME は、エンドポイントのリージョンの名前に置き換えます
  2. Cloud SQL インスタンス ユーザーとして、DNS レコードを使用して Cloud SQL インスタンスに接続します。

            mysql --host=DNS_RECORD --user=USERNAME -p

    次の項目を置き換えます。

    • DNS_RECORD は、エンドポイントの DNS レコードで置き換えます
    • USERNAME は、インスタンスに接続するユーザーの名前に置き換えます

プライベート IP アドレスで直接接続する

Private Service Connect を有効になっている Cloud SQL インスタンスに接続する前に、次のアクションを完了する必要があります。

  1. ネットワーク管理者は Private Service Connect エンドポイントを作成する必要があります。
  2. インスタンスのサービス アタッチメントは、エンドポイントを受け入れる必要があります。ネットワーク管理者は、エンドポイントのステータスをチェックして、ステータスが ACCEPTED であることを確認できます。

これらの条件が満たされると、エンドポイントの IP アドレスを使用してインスタンスにアクセスできるようになります。このインスタンスには、エンドポイントが作成された任意の VPC ネットワークからアクセスできます。

gcloud

  1. ネットワーク管理者として、gcloud compute addresses describe コマンドを使用して Private Service Connect エンドポイントの IP アドレスを取得します。

            gcloud compute addresses describe ADDRESS_NAME \
            --project=PROJECT_ID \
            --region=REGION_NAME

    次の項目を置き換えます。

    • ADDRESS_NAME は、エンドポイントの IP アドレスの名前に置き換えます
    • PROJECT_ID は、エンドポイントが含まれる Google Cloud プロジェクトの ID に置き換えます
    • REGION_NAME は、エンドポイントのリージョンの名前に置き換えます
  2. Cloud SQL インスタンス ユーザーとして、プライベート IP アドレスを使用して Cloud SQL インスタンスに接続します。

            mysql --host=IP_ADDRESS --user=USERNAME -p

    次の項目を置き換えます。

    • IP_ADDRESS は、エンドポイントの IP アドレスに置き換えます
    • USERNAME は、インスタンスに接続するユーザーの名前に置き換えます

Cloud SQL Auth Proxy を使用して接続する

Cloud SQL Auth Proxy は、承認済みネットワークや SSL の構成を必要とせずに、Private Service Connect が有効なインスタンスへの安全なアクセスを提供するコネクタです。

Cloud SQL Auth Proxy クライアントの接続を許可するには、DNS 管理者は、インスタンスに提供された推奨される DNS 名と一致する DNS レコードを設定する必要があります。DNS レコードは、DNS リソースとドメイン名のマッピングです。Cloud SQL Auth Proxy は、Private Service Connect が有効になっているインスタンスへの接続をサポートしています。Cloud SQL 管理者が Cloud SQL Auth Proxy をインストールするためにダウンロードするバイナリは、オペレーティング システムと、オペレーティング システムが 32 ビットカーネルまたは 64 ビットカーネルのいずれかを使用しているかによって異なります。新しいハードウェアのほとんどは 64 ビットのカーネルを使用しています。

お使いのマシンが 32 ビットと 64 ビットのどちらのカーネルを実行しているかわからない場合は、Linux または macOS で uname -a コマンドを使用します。Windows の場合は、Windows のドキュメントをご覧ください。

Linux AMD 64 ビット

  1. Cloud SQL Proxy をダウンロードします。

            curl -o cloud-sql-proxy
              https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.8.2/cloud-sql-proxy.linux.amd64
  2. Cloud SQL Auth Proxy を動作可能にします。

            chmod +x cloud-sql-proxy

Linux AMD 32 ビット

  1. Cloud SQL Proxy をダウンロードします。

            curl -o cloud-sql-proxy
              https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.8.2/cloud-sql-proxy.linux.386
  2. curl コマンドが見つからない場合は、sudo apt install curl を実行して、ダウンロード コマンドを繰り返します。
  3. Cloud SQL Auth Proxy を動作可能にします。

            chmod +x cloud-sql-proxy

Linux ARM 64 ビット

  1. Cloud SQL Proxy をダウンロードします。

            curl -o cloud-sql-proxy
              https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.8.2/cloud-sql-proxy.linux.arm64
  2. Cloud SQL Auth Proxy を動作可能にします。

            chmod +x cloud-sql-proxy

Linux ARM 32 ビット

  1. Cloud SQL Proxy をダウンロードします。

            curl -o cloud-sql-proxy
              https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.8.2/cloud-sql-proxy.linux.arm
  2. curl コマンドが見つからない場合は、sudo apt install curl を実行して、ダウンロード コマンドを繰り返します。
  3. Cloud SQL Auth Proxy を動作可能にします。

            chmod +x cloud-sql-proxy

macOS 64 ビット

  1. Cloud SQL Proxy をダウンロードします。

            curl -o cloud-sql-proxy
              https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.8.2/cloud-sql-proxy.darwin.amd64
  2. Cloud SQL Auth Proxy を動作可能にします。

            chmod +x cloud-sql-proxy

Mac M1 32 ビット

  1. Cloud SQL Proxy をダウンロードします。

            curl -o cloud-sql-proxy
              https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.8.2/cloud-sql-proxy.darwin.arm64
  2. Cloud SQL Auth Proxy を動作可能にします。

            chmod +x cloud-sql-proxy

Windows 64 ビット

  1. Cloud SQL Proxy をダウンロードします。

            curl -o cloud-sql-proxy
              https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.8.2/cloud-sql-proxy.x64.exe
  2. Cloud SQL Auth Proxy を動作可能にします。

            chmod +x cloud-sql-proxy

Windows 32 ビット

  1. Cloud SQL Proxy をダウンロードします。

            curl -o cloud-sql-proxy
              https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.8.2/cloud-sql-proxy.x86.exe
  2. Cloud SQL Auth Proxy を動作可能にします。

            chmod +x cloud-sql-proxy

Cloud SQL Auth Proxy を起動する

Cloud SQL Auth Proxy は、Private Service Connect が有効になっているインスタンスへの接続をサポートしています。詳細については、Cloud SQL Auth Proxy を起動するをご覧ください。

gcloud

  1. gcloud sql instances describe コマンドを使用して、Cloud SQL インスタンスの概要を表示します。また、コマンドには、インスタンスの接続名を含めます。この接続名は PROJECT_ID:REGION_NAME:INSTANCE_NAME の形式で記述します。

            gcloud sql instances describe INSTANCE_NAME \
            --project=PROJECT_ID \
            --format='value(connectionName)'

    次の項目を置き換えます。

    • INSTANCE_NAME は、Cloud SQL インスタンスの名前に置き換えます
    • PROJECT_ID は、インスタンスが含まれる Google Cloud プロジェクトの ID に置き換えます
  2. インスタンス接続名をコピーします。
  3. Cloud SQL Auth Proxy を起動します。

            ./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc 

    INSTANCE_CONNECTION_NAME を、前のステップでコピーしたインスタンス接続名に置き換えます。

Cloud SQL 言語コネクタを使用して接続する

Cloud SQL 言語コネクタは、Private Service Connect が有効になっている Cloud SQL インスタンスへの安全なアクセスを提供するライブラリであり、承認済みネットワークや SSL 構成は不要です。

Cloud SQL 言語コネクタとの接続を許可するには、DNS 管理者が、インスタンスに指定された推奨 DNS 名に一致する DNS レコードを設定する必要があります。DNS レコードは、DNS リソースとドメイン名のマッピングです。

Cloud SQL 言語コネクタは、それぞれのライブラリ内の PSC IP タイプを介した Private Service Connect 接続をサポートしています。

App Engine Standard、Cloud Run、Cloud Functions から接続する

管理者は、App Engine StandardCloud Run、または Cloud Functions を使用して、Private Service Connect が有効になっている Cloud SQL インスタンスに接続できます。

このようなサーバーレス環境では、Cloud SQL 言語コネクタと、IP アドレスとポート番号を使用した直接 TCP 接続の両方がサポートされています。直接 TCP 接続の場合、これは、ネットワーク管理者が Private Service Connect エンドポイントを作成するときに予約する IP アドレスです。IP アドレスは、データベース ホストのアドレスとして指定できます。

または、DNS 管理者がエンドポイントの DNS レコードを作成した場合は、そのレコードをホストに指定できます。これは、Cloud SQL 言語コネクタを使用するための要件です。

BigQuery から接続する

BigQuery 管理者は、--enable-google-private-path パラメータを使用して Cloud SQL のデータにアクセスし、そのデータに対してプライベート IP 接続を介してクエリを実行できます。このパラメータは次の場合にのみ有効です。

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

接続をテストする

ネットワーク管理者は、Private Service Connect が有効になっている Cloud SQL インスタンスへの接続をテストできます。インスタンスへのインバウンド接続をテストするために、この管理者は、インスタンスへの接続に使用される Private Service Connect エンドポイントの IP アドレスを宛先 IP アドレスに設定できます。

gcloud

gcloud network-management connectivity-tests create コマンドを使用して、Private Service Connect を有効にした Cloud SQL インスタンスの接続テストを作成します。

        gcloud network-management connectivity-tests create CONNECTIVITY_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 MySQL インスタンスの場合、ポート番号は 3306 です。

ファイアウォール ルールの作成

ネットワーク管理者は、VPC ネットワーク内のサービス ユーザーから Private Service Connect エンドポイントへの接続を制限できます。そのために、管理者はエンドポイントの IP アドレスに適用される下り(外向き)ネットワーク ファイアウォール ルールを追加します。このルールに対して、管理者は VPC ネットワーク内のすべての VM がソースになるように定義し、タグまたはサービス アカウントを指定します。

gcloud

gcloud compute firewall-rules create コマンドを使用して、下り(外向き)ファイアウォール ルールを作成します。

        gcloud compute firewall-rules create FIREWALL_RULE_NAME \
        --project=PROJECT_ID \
        --direction=EGRESS \
        --priority=PRIORITY \
        --network=NETWORK_NAME \
        --action=ALLOW/DENY \
        --rules=all \
        --destination-ranges=DESTINATION_IP_ADDRESS
        --target-tags=TAG_NAMES

次の項目を置き換えます。

  • FIREWALL_RULE_NAME: ファイアウォール ルールの名前。
  • PROJECT_ID は、ルールを含む Google Cloud プロジェクトの ID に置き換えます。
  • PRIORITY: ルールの優先度を示す数値です。数字が小さいほど、優先度が高くなります。
  • NETWORK_NAME は、ルールがアタッチされている VPC ネットワークの名前に置き換えます。
  • DESTINATION_IP_ADDRESS は、Private Service Connect エンドポイントの IP アドレスに置き換えます。
  • TAG_NAMES は、タグ名の CSV リストに置き換えます。これらは、ルールが適用される VPC ネットワーク内のサービス ユーザーを示します。

制限事項

  • ネットワーク プロジェクトに以前の Cloud SQL ネットワーク アーキテクチャを使用するインスタンスが含まれている場合、Private Service Connect インスタンスは作成できません。Cloud SQL には、以前のネットワーク アーキテクチャから新しいネットワーク アーキテクチャにインスタンスをアップグレードする場合に役立つツールが用意されています。詳細や、プロジェクト内の Cloud SQL インスタンスのネットワーク アーキテクチャを確認して必要なアップグレードを行う方法については、インスタンスを新しいネットワーク アーキテクチャにアップグレードするをご覧ください。

    プロジェクト内の Cloud SQL インスタンスのネットワーク アーキテクチャを確認して必要なアップグレードを行う方法については、インスタンスを新しいネットワーク アーキテクチャにアップグレードするをご覧ください。

  • Private Service Connect が有効になっている Cloud SQL インスタンスのサービス アタッチメントに接続する Private Service Connect エンドポイントは、10 個まで設定できます。

  • 次のフラグが無効であるか、影響を受けています。

    • --availability-type: このフラグは REGIONAL に設定する必要があります。高可用性インスタンスのみがサポートされます。
    • --no-assign-ip: Private Service Connect が有効になっている Cloud SQL インスタンスは、パブリック IP などの他の接続タイプを使用できないため、このフラグを使用する必要があります。
    • --authorized-networks: このフラグを使用して承認済みネットワークを追加することはできません。
    • --database-version: このフラグは、MySQL または PostgreSQL データベースのバージョンに設定する必要があります。SQL Server データベースはサポートされていません。
    • --network: このフラグはプライベート サービス アクセスに関連付けられているため使用できません。
    • --allocated-ip-range-name: 許可された IP 範囲名がサポートされていないため、このフラグは使用できません。
  • Private Service Connect が有効になっているインスタンスの外部レプリカを作成することはできません。

  • Private Service Connect が有効になっているインスタンスのレプリカは、プライマリ インスタンスと同じリージョン内でのみ作成できます。クロスリージョン レプリカはサポートされていません。

  • 既存のインスタンスで Private Service Connect を有効または無効にすることはできません。

  • Private Service Connect が有効になっているインスタンスを、プライベート サービス アクセスまたはパブリック IP 接続を使用するように構成することはできません。

    • Private Service Connect が有効になっているインスタンスでは、パブリック IP 接続を有効にできません。
    • プライベート サービス アクセスの有効化や承認済みネットワークのインスタンスへの追加はできません。
    • インスタンスの接続タイプは変更できません。
  • 2021 年 4 月 1 日以降に Cloud SQL の使用を開始したプロジェクトで Private Service Connect が有効になっているインスタンスのみを作成できます。

  • Private Service Connect が有効になっている Cloud SQL インスタンスに gcloud sql connect コマンド、Cloud Shell、Cloud Build、Database Migration Service を使用して接続することはできません。

  • Private Service Connect が有効になっている Cloud SQL インスタンスへの接続をテストする場合、次の項目は設定できません。

    • 直接接続の宛先としてのインスタンスのプライベート IP アドレスまたは DNS 名
    • 接続元としてのインスタンス
    • 接続元としての Private Service Connect エンドポイントの IP アドレス
  • 承認済みネットワークを介した IP ベースの許可リストはサポートされていません。

トラブルシューティング

このセクションでは、Private Service Connect が有効になっている Cloud SQL インスタンスに関連する問題と、その問題のトラブルシューティング手順について説明します。

問題 トラブルシューティング
インスタンスのサービス アタッチメントは、Private Service Connect エンドポイントを受け入れません。
  1. gcloud compute forwarding-rules コマンドを使用して、エンドポイントのステータスを確認します。

    
            gcloud compute forwarding-rules ENDPOINT_NAME \
            --project=PROJECT_ID \
            --region=REGION_NAME \
            | grep pscConnectionStatus

    次の項目を置き換えます。

    • ENDPOINT_NAME は、エンドポイントの名前に置き換えます
    • PROJECT_ID は、エンドポイントが含まれる Google Cloud プロジェクトの ID に置き換えます
    • REGION_NAME は、エンドポイントのリージョンの名前に置き換えます

  2. エンドポイントのステータスが ACCEPTED であることを確認します。ステータスが PENDING の場合、エンドポイントを含む Google Cloud プロジェクトはインスタンスによって許可リストに登録されません。エンドポイントが作成されるネットワーク プロジェクトが、インスタンスによって許可リストに含まれていることを確認する必要があります。詳細については、Cloud SQL インスタンスを更新するをご覧ください。

次のステップ