VPC とコネクタ

サーバーレス VPC アクセス コネクタを構成すると、Cloud Run サービスまたはジョブで VPC ネットワークにトラフィックを送信できます。

始める前に

  • プロジェクトに VPC ネットワークがない場合は作成します

  • 共有 VPC を使用する場合は、共有 VPC ネットワークへの接続をご覧ください。

  • Google Cloud コンソールで、プロジェクトのサーバーレス VPC アクセス API が有効になっていることを確認します。

    API を有効にする

  • 各サーバーレス VPC アクセス コネクタには、コネクタ インスタンスを配置する独自の /28 サブネットが必要です。このサブネットには、コネクタ以外のリソースを使用しないでください。共有 VPC を使用しない場合は、コネクタが使用するサブネットを作成するか、コネクタが使用する未使用のカスタム IP 範囲を指定して、コネクタが使用するサブネットを作成します。カスタム IP 範囲を選択すると、作成されるサブネットは非表示になり、ファイアウォール ルールと NAT 構成には使用できません。

コネクタを作成する

公共のインターネットを使用せずに VPC ネットワークにリクエストを送信して対応するレスポンスを受信する場合は、サーバーレス VPC アクセス コネクタを使用できます。

コネクタがその VPC ネットワークと同じプロジェクトに配置されている場合、既存のサブネットを使用してコネクタを作成するか、コネクタと新しいサブネットを作成することができます。

コネクタがサービス プロジェクトに配置されていて、共有 VPC ネットワークを使用している場合、コネクタとそれに関連付けられた VPC ネットワークは異なるプロジェクト内にあります。コネクタとその VPC ネットワークが異なるプロジェクトにある場合は、コネクタを作成する前に、共有 VPC ネットワーク管理者が共有 VPC ネットワークにコネクタのサブネットを作成する必要があります。さらに、既存のサブネットを使用してコネクタを作成することが求められます。

サブネットの要件の詳細については、コネクタのサブネットの要件をご覧ください。

マシンタイプやスケーリングなど、コネクタのスループットの詳細については、スループットとスケーリングをご覧ください。

コネクタは、 Google Cloud コンソール、Google Cloud CLI、または Terraform を使用して作成できます。

コンソール

  1. サーバーレス VPC アクセスの概要ページに移動します。

    サーバーレス VPC アクセスに移動

  2. [コネクタを作成] をクリックします。

  3. [名前] フィールドに、Compute Engine の命名規則に沿ってコネクタの名前を入力します。ただし、名前の長さは 21 文字未満とし、ハイフン(-)は 2 文字としてカウントする必要があります。

  4. [リージョン] フィールドで、コネクタのリージョンを選択します。これは、サーバーレス サービスのリージョンと一致する必要があります。

    サービスまたはジョブが us-central または europe-west リージョンにある場合は、us-central1 または europe-west1 を使用します。

  5. [ネットワーク] フィールドで、コネクタを接続する VPC ネットワークを選択します。

  6. [サブネット] フィールドで、次のいずれかのオプションを選択します。

    • 既存のサブネットを使用してコネクタを作成する: [サブネット] フィールドで既存のサブネットを選択します。

    • コネクタと新しいサブネットを作成する: [サブネット] フィールドで [カスタム IP 範囲] を選択します。次に、未使用の /28 CIDR(10.8.0.0/28 など)の最初のアドレスを入力します。これは、 Google Cloud コネクタの VPC ネットワークに作成する新しいサブネットのプライマリ IPv4 アドレス範囲として使用します。指定した IP 範囲が、コネクタの VPC ネットワークにすでに存在するルートと競合しないようにしてください。新しいサブネットの名前は aet- という接頭辞で始まります。

  7. (省略可)コネクタを詳細に制御するためのスケーリング オプションを設定するには、[スケーリング設定を表示] をクリックしてスケーリング フォームを表示します。

    1. コネクタのインスタンスの最小数と最大数を設定するか、デフォルト値(最小 2、最大 10)を使用します。コネクタは、トラフィックの使用量に応じて指定された最大値にスケールアップしますが、トラフィックが減少してもスケールダウンしません。210 の範囲の値を使用する必要があります。
    2. [インスタンス タイプ] メニューで、コネクタに使用するマシンタイプを選択するか、デフォルトの e2-micro を使用します。インスタンス タイプを選択すると、右側にコスト サイドバーが表示され、帯域幅とコストの見積もりが表示されます。
  8. [作成] をクリックします。

  9. コネクタの使用準備が整うと、コネクタ名の横に緑色のチェックマークが表示されます。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. gcloud コンポーネントを最新バージョンに更新します。

    gcloud components update
  3. プロジェクトでサーバーレス VPC アクセスが有効になっていることを確認します。

    gcloud services enable vpcaccess.googleapis.com
  4. 次のいずれかのオプションを使用してコネクタを作成します。

    より詳しい情報とオプションの引数については、gcloud のリファレンスをご覧ください。

    • 既存のサブネットを使用してコネクタを作成する:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --subnet SUBNET_NAME \
       --subnet-project HOST_PROJECT_ID \
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

      次のように置き換えます。

      • CONNECTOR_NAME: Compute Engine の命名規則に一致するコネクタの名前。ただし、名前の長さは 21 文字未満とし、ハイフン(-)は 2 文字としてカウントする必要があります。
      • REGION: サーバーレス サービスまたはジョブのリージョンと一致しているコネクタのリージョン。サービスまたはジョブが us-central または europe-west にある場合は、us-central1 または europe-west1 を使用します。
      • SUBNET_NAME: 既存のサブネットの名前。
      • HOST_PROJECT_ID: 共有 VPC ホスト プロジェクト ID。コネクタと既存のサブネットが同じプロジェクトに配置されている場合は、--subnet-project フラグを省略します。
      • MIN: コネクタに使用するインスタンスの最小数。2(デフォルト)~9 の範囲の整数を使用します。
      • MAX: コネクタに使用するインスタンスの最大数。310(デフォルト)の範囲の整数を使用します。コネクタが最大インスタンス数までスケールアップした場合、スケールダウンは行われません。
      • MACHINE_TYPE: f1-microe2-microe2-standard-4 のいずれかにする必要があります。
    • コネクタと新しいサブネットを作成する:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --network VPC_NETWORK \
       --range IP_RANGE
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

      次のように置き換えます。

      • CONNECTOR_NAME: Compute Engine の命名規則に一致するコネクタの名前。ただし、名前の長さは 21 文字未満とし、ハイフン(-)は 2 文字としてカウントする必要があります。
      • REGION: サーバーレス サービスまたはジョブのリージョンと一致しているコネクタのリージョン。サービスまたはジョブが us-central または europe-west にある場合は、us-central1 または europe-west1 を使用します。
      • VPC_NETWORK: コネクタを接続する VPC ネットワークの名前。コネクタと VPC ネットワークを同じプロジェクトに配置する必要があります。
      • IP_RANGE: Google Cloud でコネクタの VPC ネットワークに作成する新しいサブネットのプライマリ IPv4 アドレス範囲として使用する未使用の /28 CIDR(10.8.0.0/28 など)を指定します。指定した IP 範囲が、コネクタの VPC ネットワークにすでに存在するルートと競合しないようにしてください。新しいサブネットの名前は aet- という接頭辞で始まります。
      • MIN: コネクタに使用するインスタンスの最小数。2(デフォルト)~9 の範囲の整数を使用します。
      • MAX: コネクタに使用するインスタンスの最大数。310(デフォルト)の範囲の整数を使用します。コネクタが最大インスタンス数までスケールアップした場合、スケールダウンは行われません。
      • MACHINE_TYPE: f1-microe2-microe2-standard-4 のいずれかにする必要があります。
  5. 使用する前に、コネクタが READY 状態になっていることを確認します。

    gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \
    --region REGION

    次のように置き換えます。

    • CONNECTOR_NAME: コネクタの名前。これは、前のステップで指定した名前です。
    • REGION: コネクタのリージョン。これは、前の手順で指定したリージョンです。

    出力には、state: READY という行が含まれます。

Terraform

Terraform リソースを使用して、vpcaccess.googleapis.com API を有効にできます。

resource "google_project_service" "vpcaccess-api" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

Terraform モジュールを使用して VPC ネットワークとサブネットを作成し、その後コネクタを作成できます。

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 10.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-serverless-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "serverless-subnet"
      subnet_ip     = "10.10.10.0/28"
      subnet_region = "us-central1"
    }
  ]
}

module "serverless-connector" {
  source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
  version    = "~> 10.0"
  project_id = var.project_id
  vpc_connectors = [{
    name        = "central-serverless"
    region      = "us-central1"
    subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
    # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
    machine_type  = "e2-standard-4"
    min_instances = 2
    max_instances = 7
    }
    # Uncomment to specify an ip_cidr_range
    #   , {
    #     name          = "central-serverless2"
    #     region        = "us-central1"
    #     network       = module.test-vpc-module.network_name
    #     ip_cidr_range = "10.10.11.0/28"
    #     subnet_name   = null
    #     machine_type  = "e2-standard-4"
    #     min_instances = 2
    #   max_instances = 7 }
  ]
  depends_on = [
    google_project_service.vpcaccess-api
  ]
}

サービスを構成する

下り(外向き)トラフィックの送信にサーバーレス VPC アクセス コネクタを使用するように Cloud Run サービスを構成できます。これは、新しいサービスを作成するか、新しいリビジョンをデプロイするときに、 Google Cloud コンソール、Google Cloud CLI、または YAML ファイルを使用して行うことができます。

コンソール

  1. Google Cloud コンソールで Cloud Run に移動します。

    Cloud Run に移動

  2. [コンテナをデプロイ] をクリックし、[サービス] を選択して、新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. 新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。

  4. [ネットワーキング] タブをクリックします。

    画像

    • [ネットワーク] フィールドで、メニューから次のいずれかを選択します。

      • VPC ネットワークからサービスの接続を解除するには、[なし] を選択します。
      • 既存のコネクタを使用するには、プルダウン リストからそのコネクタを選択するか、[カスタム] を選択して、プルダウン リストに表示されていない既存のコネクタを使用します。
      • 新しいコネクタを作成するには、[新しい VPC コネクタを追加] を選択します。コネクタの作成方法については、サーバーレス VPC アクセス コネクタを作成するをご覧ください。
      • [トラフィック ルーティング] で、次のいずれかを選択します。
        • プライベート IP へのリクエストだけを VPC に転送し、VPC ネットワーク経由で内部アドレスにのみトラフィックを送信します。
        • すべてのトラフィックを VPC にルーティングする。すべてのアウトバウンド トラフィックを VPC ネットワーク経由で送信します。
  5. [作成] または [デプロイ] をクリックします。

gcloud

デプロイ中にコネクタを指定するには、--vpc-connector フラグを使用します。

gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME

次のように置き換えます。

  • SERVICE: 実際のサービスの名前。
  • IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG です。
  • CONNECTOR_NAME: コネクタの名前。

既存のサービスのコネクタを接続、更新、削除するには、必要に応じて次のいずれかのフラグを指定して gcloud run services update コマンドを使用します。

たとえば、コネクタを接続または更新するには、次のコマンドを使用します。

gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME

次のように置き換えます。

  • SERVICE: 実際のサービスの名前。
  • CONNECTOR_NAME: コネクタの名前。

YAML

  1. 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. 最上位の spec 属性の下の annotations 属性にある run.googleapis.com/vpc-access-connector 属性を追加または更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
          name: REVISION

    次のように置き換えます。

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
    • CONNECTOR_NAME は、コネクタの名前に置き換えます。
    • REVISION は、新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります
      • SERVICE- で始まる
      • 小文字、数字、- のみが使用されている
      • 末尾が - ではない
      • 63 文字以内である
  3. 次のコマンドを使用して、サービスを作成または更新します。

    gcloud run services replace service.yaml

Terraform

Terraform リソースを使用してサービスを作成し、コネクタを使用するように構成できます。

# Cloud Run service
resource "google_cloud_run_v2_service" "gcr_service" {
  name     = "mygcrservice"
  location = "us-west1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        limits = {
          cpu    = "1000m"
          memory = "512Mi"
        }
      }
      # the service uses this SA to call other Google Cloud APIs
      # service_account_name = myservice_runtime_sa
    }

    scaling {
      # Limit scale up to prevent any cost blow outs!
      max_instance_count = 5
    }

    vpc_access {
      # Use the VPC Connector
      connector = google_vpc_access_connector.connector.id
      # all egress from the service should go through the VPC Connector
      egress = "ALL_TRAFFIC"
    }
  }
}

ジョブを構成する

サーバーレス VPC アクセス コネクタを作成したら、そのコネクタを使用するように Cloud Run ジョブを構成できます。これは、新しいジョブを作成するときに、 Google Cloud コンソール、Google Cloud CLI、または YAML を使用して行うことができます。

コンソール

  1. Google Cloud コンソールで、Cloud Run の [ジョブ] ページに移動します。

    Cloud Run に移動

  2. [コンテナをデプロイ] をクリックし、[ジョブ] を選択して、ジョブの初期設定ページに入力します。既存のジョブを構成する場合は、ジョブを選択して [編集] をクリックします。

  3. [コンテナ、ボリューム、接続、セキュリティ] をクリックして、ジョブのプロパティ ページを開きます。

  4. [接続] タブをクリックします。

    イメージ

    • [ネットワーク] フィールドで、メニューから次のいずれかを選択します。

      • VPC ネットワークからジョブの接続を解除するには、[なし] を選択します。
      • 既存のコネクタを使用するには、プルダウン リストからそのコネクタを選択するか、[カスタム] を選択して、プルダウン リストに表示されていない既存のコネクタを使用します。
      • 新しいコネクタを作成するには、[新しい VPC コネクタを追加] を選択します。

        コネクタの作成方法については、サーバーレス VPC アクセス コネクタを作成するをご覧ください。
  5. [作成] または [更新] をクリックします。

gcloud

ジョブのデプロイ時にコネクタを指定するには、--vpc-connector フラグを使用します。

gcloud run jobs create JOB --image IMAGE_URL --vpc-connector CONNECTOR_NAME

次のように置き換えます。

  • JOB: ジョブの名前。
  • IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG です。
  • CONNECTOR_NAME: コネクタの名前。

既存のサービスのコネクタを接続、更新、削除するには、必要に応じて次のいずれかのフラグを指定して gcloud run jobs update コマンドを使用します。

たとえば、コネクタを接続または更新するには、次のコマンドを使用します。

gcloud run jobs update JOB --vpc-connector CONNECTOR_NAME

次のように置き換えます。

  • JOB: ジョブの名前。
  • CONNECTOR_NAME: コネクタの名前。

YAML

既存のジョブ構成をダウンロードして表示するには、gcloud run jobs describe --format export コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud run jobs replace コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

    gcloud run jobs describe JOB --format export > job.yaml
  2. 最上位の spec 属性の下の annotations 属性にある run.googleapis.com/vpc-access-connector 属性を追加または更新します。

    apiVersion: serving.knative.dev/v1
      kind: Job
      metadata:
        name: JOB
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/vpc-access-connector: CONNECTOR_NAME

    次のように置き換えます。

    • JOB: Cloud Run ジョブの名前。
    • CONNECTOR_NAME は、コネクタの名前に置き換えます。run.googleapis.com/vpc-access-connector 属性は、下り(外向き)設定を指定するときに必要です。
  3. 次のコマンドを使用して、ジョブを新しい構成に置き換えます。

    gcloud run jobs replace job.yaml

VPC リソースにアクセスする

ファイアウォール ルールとポリシーを使用してコネクタからのアクセスを制限できます。また、下り(外向き)と上り(内向き)の設定を構成することで、制限を追加できます。

ファイアウォール ルールとポリシーの設定

サービス プロジェクトのコネクタに必要なファイアウォール ルール

スタンドアロン VPC ネットワークまたは共有 VPC ネットワークのホスト プロジェクトでコネクタを作成すると、 Google Cloud はコネクタの操作に必要なすべてのファイアウォール ルールを作成します。詳細については、スタンドアロン VPC ネットワークまたは共有 VPC ホスト プロジェクト内のコネクタのファイアウォール ルールをご覧ください。

ただし、サービス プロジェクトでコネクタを作成し、コネクタがホスト プロジェクトの共有 VPC ネットワークをターゲットとする場合は、次の範囲からコネクタの操作に必要なトラフィックを許可するファイアウォール ルールを追加する必要があります。

これらの範囲は、Cloud Run、Cloud Run functions、App Engine スタンダード環境の基盤となる Google インフラストラクチャで使用されます。各サーバーレス リソースが接続先のコネクタとのみ通信するように、これらの IP アドレスからのすべてのリクエストは Google インフラストラクチャから送信されます。

また、コネクタのサブネットから VPC ネットワーク内のリソースへのトラフィックを許可する必要があります。

この操作を行うには、ホスト プロジェクトで次のいずれかのロールが必要です。

基本構成の場合、共有 VPC ネットワークに接続されたサービス プロジェクトにあるサーバーレス リソースが、ネットワーク内の任意のリソースにリクエストを送信できるようにルールを適用します。

これらのルールを適用するには、ホスト プロジェクトで次のコマンドを実行します。

  1. Google のサーバーレス インフラストラクチャとヘルスチェック プローブからのリクエストが、ネットワーク内のすべてのコネクタに到達できるようにするファイアウォール ルールを作成します。これらのコマンドで、UDP ポートと TCP ポートはそれぞれプロキシとして、および HTTP ヘルスチェックに使用されます。指定したポートは変更しないでください。

    gcloud compute firewall-rules create serverless-to-vpc-connector \
        --allow tcp:667,udp:665-666,icmp \
        --source-ranges=35.199.224.0/19 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-to-serverless \
        --allow tcp:667,udp:665-666,icmp \
        --destination-ranges=35.199.224.0/19 \
        --direction=EGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-health-checks \
        --allow tcp:667 \
        --source-ranges=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK

    VPC_NETWORK は、コネクタを接続する VPC ネットワークの名前に置き換えます。

  2. VPC ネットワークに上り(内向き)ファイアウォール ルールを作成し、このネットワークをターゲットとするコネクタからのリクエストを許可します。

    gcloud compute firewall-rules create vpc-connector-requests \
        --allow tcp,udp,icmp \
        --direction=INGRESS \
        --source-tags vpc-connector \
        --network=VPC_NETWORK

    このルールにより、コネクタに対して、ネットワーク内のすべてのリソースへのアクセスが許可されます。サーバーレス VPC アクセスを使用してサーバーレス環境でアクセスできるリソースを制限するには、コネクタ VM による VPC ネットワーク リソースへのアクセスを制限するをご覧ください。

特定のコネクタに対するファイアウォール ルールを作成する

サービス プロジェクトのコネクタに必要なファイアウォール ルールの手順に沿って、すべてのコネクタと、今後作成されるコネクタの両方に適用されるファイアウォール ルールを作成します。これが必要でなく、特定のコネクタだけに対するルールを作成する場合は、それらのコネクタにのみ適用されるようにルールの範囲を設定できます。

ルールの対象範囲を特定のコネクタに限定するには、次のいずれかの仕組みを使用できます。

  • ネットワーク タグ: 各コネクタには、vpc-connectorvpc-connector-REGION-CONNECTOR_NAME の 2 つのネットワーク タグがあります。後者のフォーマットを使用して、ファイアウォール ルールの範囲を特定のコネクタに制限します。
  • IP 範囲: このルールは上り(内向き)ルールでは機能しないため、下り(外向き)ルールにのみ使用します。コネクタ サブネットの IP 範囲を使用して、ファイアウォール ルールの範囲を単一の VPC コネクタに制限できます。

コネクタ VM による VPC ネットワーク リソースへのアクセスを制限する

VPC ファイアウォール ルールまたはファイアウォール ポリシーのルールを使用して、コネクタのターゲット VPC ネットワーク内のリソースへのアクセスを制限できます。これらの制限は、次のいずれかの方法で実現できます。

  • ターゲットがコネクタ VM のアクセスを制限するリソースを表し、ソースがコネクタ VM を表す上り(内向き)ルールを作成します。
  • ターゲットがコネクタ VM を表し、宛先がコネクタ VM へのアクセスを制限するリソースを表す下り(外向き)ルールを作成します。

次の例は、各方法を示しています。

上り(内向き)ルールを使用してアクセスを制限する

ネットワーク タグまたは CIDR 範囲を選択して、VPC ネットワークへの受信トラフィックを制御します。

ネットワーク タグ

次の手順は、コネクタのネットワーク タグに基づいて、VPC ネットワークへのアクセスを制限する上り(内向き)ルールを作成する方法を示しています。

  1. ファイアウォール ルールを挿入するために必要な権限を付与されていることを確認してください。次のいずれかの Identity and Access Management(IAM)ロールを付与されている必要があります。

  2. VPC ネットワーク間のコネクタのトラフィックを拒否します。

    コネクタのネットワーク タグからの上り(内向き)を拒否するには、VPC ネットワークで優先度 1000 未満の上り(内向き)ファイアウォール ルールを作成します。これによって、デフォルトでサーバーレス VPC アクセスが VPC ネットワークに作成する暗黙的なファイアウォール ルールがオーバーライドされます。

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY

    次のように置き換えます。

    • RULE_NAME: 新しいファイアウォール ルールの名前。例: deny-vpc-connector

    • PROTOCOL: VPC コネクタから許可する 1 つ以上のプロトコル。サポートされているプロトコルは tcp または udp です。たとえば、tcp:80,udp は、ポート 80 経由の TCP トラフィックと UDP トラフィックを許可します。詳細については、allow フラグのドキュメントをご覧ください。

      セキュリティと検証のために、次のサポートされていないプロトコルのトラフィックをブロックする拒否ルールを構成することもできます。ahallespicmpipipsctp

    • VPC_CONNECTOR_NETWORK_TAG: すべてのコネクタ(今後作成されるコネクタを含む)のアクセス権を制限する場合はユニバーサル コネクタ ネットワーク タグ。または、特定のコネクタのアクセス権を制限する場合は一意のネットワーク タグ。

      • ユニバーサル ネットワーク タグ: vpc-connector
      • 一意のネットワーク タグ: vpc-connector-REGION-CONNECTOR_NAME

        次のように置き換えます。

        • REGION: 制限するコネクタのリージョン
        • CONNECTOR_NAME: 制限するコネクタの名前

      コネクタ ネットワーク タグの詳細については、ネットワーク タグをご覧ください。

    • VPC_NETWORK: VPC ネットワークの名前

    • PRIORITY: 0~65535 の整数。たとえば、0 は最も高い優先度に設定されます。

  3. コネクタ トラフィックを受信する必要があるリソースに対するコネクタのトラフィックを許可します。

    allow フラグと target-tags フラグを使用して、VPC コネクタでアクセスする VPC ネットワーク内のリソースに対して上り(内向き)ファイアウォール ルールを作成します。このルールの優先度は、前の手順で作成したルールの優先度よりも低い値に設定します。

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY

    次のように置き換えます。

    • RULE_NAME: 新しいファイアウォール ルールの名前。例: allow-vpc-connector-for-select-resources

    • PROTOCOL: VPC コネクタから許可する 1 つ以上のプロトコル。サポートされているプロトコルは tcp または udp です。たとえば、tcp:80,udp は、ポート 80 経由の TCP トラフィックと UDP トラフィックを許可します。詳細については、allow フラグのドキュメントをご覧ください。

    • VPC_CONNECTOR_NETWORK_TAG: すべてのコネクタ(今後作成されるコネクタを含む)のアクセス権を制限する場合はユニバーサル コネクタ ネットワーク タグ。または、特定のコネクタのアクセス権を制限する場合は一意のネットワーク タグ。これは、前のステップで指定したネットワーク タグと一致する必要があります。

      • ユニバーサル ネットワーク タグ: vpc-connector
      • 一意のネットワーク タグ: vpc-connector-REGION-CONNECTOR_NAME

        次のように置き換えます。

        • REGION: 制限するコネクタのリージョン
        • CONNECTOR_NAME: 制限するコネクタの名前

      コネクタ ネットワーク タグの詳細については、ネットワーク タグをご覧ください。

    • VPC_NETWORK: VPC ネットワークの名前

    • RESOURCE_TAG: VPC コネクタがアクセスする VPC リソースのネットワーク タグ。

    • PRIORITY: 前のステップで設定した優先度よりも小さい整数。たとえば、前のステップで作成したルールの優先度を 990 に設定した場合は、980 を試してください。

ファイアウォール ルールの作成に必須のフラグとオプション フラグの詳細については、gcloud compute firewall-rules create のドキュメントをご覧ください。

CIDR 範囲

次の手順は、コネクタの CIDR 範囲に基づいて、VPC ネットワークへのアクセスを制限する上り(内向き)ルールを作成する方法を示しています。

  1. ファイアウォール ルールを挿入するために必要な権限を付与されていることを確認してください。次のいずれかの Identity and Access Management(IAM)ロールを付与されている必要があります。

  2. VPC ネットワーク間のコネクタのトラフィックを拒否します。

    コネクタの CIDR 範囲からの上り(内向き)を拒否するには、VPC ネットワークで優先度 1000 未満の上り(内向き)ファイアウォール ルールを作成します。これによって、デフォルトでサーバーレス VPC アクセスが VPC ネットワークに作成する暗黙的なファイアウォール ルールがオーバーライドされます。

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY

    次のように置き換えます。

    • RULE_NAME: 新しいファイアウォール ルールの名前。例: deny-vpc-connector

    • PROTOCOL: VPC コネクタから許可する 1 つ以上のプロトコル。サポートされているプロトコルは tcp または udp です。たとえば、tcp:80,udp は、ポート 80 経由の TCP トラフィックと UDP トラフィックを許可します。詳細については、allow フラグのドキュメントをご覧ください。

      セキュリティと検証のために、次のサポートされていないプロトコルのトラフィックをブロックする拒否ルールを構成することもできます。ahallespicmpipipsctp

    • VPC_CONNECTOR_CIDR_RANGE: アクセスを制限するコネクタの CIDR 範囲

    • VPC_NETWORK: VPC ネットワークの名前

    • PRIORITY: 0~65535 の整数。たとえば、0 は最も高い優先度に設定されます。

  3. コネクタ トラフィックを受信する必要があるリソースに対するコネクタのトラフィックを許可します。

    allow フラグと target-tags フラグを使用して、VPC コネクタでアクセスする VPC ネットワーク内のリソースに対して上り(内向き)ファイアウォール ルールを作成します。このルールの優先度は、前の手順で作成したルールの優先度よりも低い値に設定します。

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY

    次のように置き換えます。

    • RULE_NAME: 新しいファイアウォール ルールの名前。例: allow-vpc-connector-for-select-resources

    • PROTOCOL: VPC コネクタから許可する 1 つ以上のプロトコル。サポートされているプロトコルは tcp または udp です。たとえば、tcp:80,udp は、ポート 80 経由の TCP トラフィックと UDP トラフィックを許可します。詳細については、allow フラグのドキュメントをご覧ください。

    • VPC_CONNECTOR_CIDR_RANGE: アクセスを制限するコネクタの CIDR 範囲

    • VPC_NETWORK: VPC ネットワークの名前

    • RESOURCE_TAG: VPC コネクタがアクセスする VPC リソースのネットワーク タグ。

    • PRIORITY: 前のステップで設定した優先度よりも小さい整数。たとえば、前のステップで作成したルールの優先度を 990 に設定した場合は、980 を試してください。

ファイアウォール ルールの作成に必要なフラグとオプション フラグの詳細については、gcloud compute firewall-rules create のドキュメントをご覧ください。

下り(外向き)ルールを使用してアクセスを制限する

次の手順は、コネクタのアクセスを制限する下り(外向き)ルールを作成する方法を示しています。

  1. ファイアウォール ルールを挿入するために必要な権限を付与されていることを確認してください。次のいずれかの Identity and Access Management(IAM)ロールを付与されている必要があります。

  2. コネクタからの下り(外向き)トラフィックを拒否します。

    サーバーレス VPC アクセス コネクタに下り(外向き)ファイアウォール ルールを作成し、確立済みのレスポンスを除き、宛先に送信トラフィックを送ることができないようにします。

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --direction=EGRESS \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --network=VPC_NETWORK \
    --priority=PRIORITY

    次のように置き換えます。

    • RULE_NAME: 新しいファイアウォール ルールの名前。例: deny-vpc-connector

    • PROTOCOL: VPC コネクタから許可する 1 つ以上のプロトコル。サポートされているプロトコルは tcp または udp です。たとえば、tcp:80,udp は、ポート 80 経由の TCP トラフィックと UDP トラフィックを許可します。詳細については、allow フラグのドキュメントをご覧ください。

      セキュリティと検証のために、次のサポートされていないプロトコルのトラフィックをブロックする拒否ルールを構成することもできます。ahallespicmpipipsctp

    • VPC_CONNECTOR_NETWORK_TAG: 既存のすべての VPC コネクタと今後作成される VPC コネクタにルールを適用する場合は、ユニバーサル VPC コネクタのネットワーク タグを使用します。または、特定のコネクタを制御する場合は、一意の VPC コネクタのネットワーク タグを使用します。

    • VPC_NETWORK: VPC ネットワークの名前

    • PRIORITY: 0~65535 の整数。たとえば、0 は最も高い優先度に設定されます。

  3. コネクタがアクセスするように設定した CIDR 範囲内に宛先が存在する場合に、下り(外向き)トラフィックを許可します。

    allow フラグと destination-ranges フラグを使用して、特定の宛先範囲でコネクタからの下り(外向き)トラフィックを許可するファイアウォール ルールを作成します。宛先範囲には、コネクタにアクセスを許可する VPC ネットワーク内のリソースの CIDR 範囲を設定します。このルールの優先度は、前の手順で作成したルールの優先度よりも低い値に設定します。

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --destination-ranges=RESOURCE_CIDR_RANGE \
    --direction=EGRESS \
    --network=VPC_NETWORK \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --priority=PRIORITY

    次のように置き換えます。

    • RULE_NAME: 新しいファイアウォール ルールの名前。例: allow-vpc-connector-for-select-resources

    • PROTOCOL: VPC コネクタから許可する 1 つ以上のプロトコル。サポートされているプロトコルは tcp または udp です。たとえば、tcp:80,udp は、ポート 80 経由の TCP トラフィックと UDP トラフィックを許可します。詳細については、allow フラグのドキュメントをご覧ください。

    • RESOURCE_CIDR_RANGE: アクセスを制限するコネクタの CIDR 範囲

    • VPC_NETWORK: VPC ネットワークの名前

    • VPC_CONNECTOR_NETWORK_TAG: 既存のすべての VPC コネクタと今後作成される VPC コネクタにルールを適用する場合は、ユニバーサル VPC コネクタのネットワーク タグを使用します。または、特定のコネクタを制御する場合は、一意の VPC コネクタのネットワーク タグを使用します。前のステップで一意のネットワーク タグを使用した場合は、一意のネットワーク タグを使用します。

    • PRIORITY: 前のステップで設定した優先度よりも小さい整数。たとえば、前のステップで作成したルールの優先度を 990 に設定した場合は、980 を試してください。

ファイアウォール ルールの作成に必須のフラグとオプション フラグの詳細については、gcloud compute firewall-rules create のドキュメントをご覧ください。

コネクタを管理する

デフォルトでは、特定の内部 IPv4 アドレスの宛先(DNS レスポンスによって解決される内部 IPv4 の宛先を含む)へのリクエストのみが、サーバーレス VPC アクセス コネクタ経由でルーティングされます。ただし、サービスからのすべてのアウトバウンド リクエストを VPC ネットワークにルーティングしたいこともあります。

サーバーレス VPC アクセスは、IPv4 トラフィックのルーティングのみをサポートします。VPC ネットワークに IPv6 ルートがある場合でも、IPv6 トラフィックはサポートされません。

サービスまたはジョブからのアウトバウンド リクエストのルーティングを制御するために、VPC 下り(外向き)を次のいずれかのオプションに設定できます。

  • プライベート IP へのリクエストのみを VPC にルーティングする: デフォルト。トラフィックを伝送するパケットの宛先が次の場合にのみ、VPC ネットワーク経由でトラフィックがルーティングされます。

    他の宛先へのパケットは、Cloud Run からインターネットにルーティングされます(VPC ネットワーク経由ではありません)。

  • すべてのトラフィックを VPC にルーティングする: パケットの宛先に関係なく、トラフィックはコネクタに関連付けられた VPC ネットワーク経由でルーティングされます。このオプションは、次のような状況で使用する必要があります。

    • プライベートで使用される外部 IP アドレス範囲を使用して VPC サブネット範囲にトラフィックを送信する必要がある場合。VPC サブネット範囲の詳細については、サブネットの概要の有効な IPv4 範囲をご覧ください。
    • アドレスがプライベートで使用される外部 IP アドレスである Google API の Private Service Connect エンドポイントにトラフィックを送信する必要がある場合。Google API の Private Service Connect エンドポイントの詳細については、エンドポイント経由で Google API にアクセスするをご覧ください。
    • コネクタの VPC ネットワーク内でルーティング可能で、プライベートで使用される他の外部 IP アドレスにトラフィックを送信する必要がある場合。プライベートで利用される外部 IP アドレスを対象とする宛先としては、ピアリング サブネット範囲(およびサービスに割り振られた IP アドレス範囲から作成されたピアリング サブネット範囲)、VPC ショートのカスタムルートを使用してアクセスできる宛先などが含まれます。

    VPC ネットワークにデフォルト ルートが含まれている場合でも、NAT サービスを提供するように Cloud NAT ゲートウェイを構成すると、コネクタによって処理された後にパケットをインターネットにルーティングできます。これらのパケットは、VPC ネットワーク内のルートと、VPC ネットワークに適用されるファイアウォール ルールの対象になります。ルートとファイアウォールの構成を使用すると、サーバーレス VPC アクセス コネクタ経由で関数から送信されるすべてのアウトバウンド リクエストのインターネット下り(外向き)を制御できます。

下り(外向き)サービス トラフィックを制御する

新しいサービスを作成するか、新しいリビジョンをデプロイするときに、Google Cloud コンソール、Google Cloud CLI、または YAML ファイルを使用して、VPC の下り(外向き)設定を指定できます。

コンソール

  1. Google Cloud コンソールで Cloud Run に移動します。

    Cloud Run に移動

  2. [コンテナをデプロイ] をクリックし、[サービス] を選択して、新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. 新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。

  4. [ネットワーキング] タブをクリックします。

    画像

    • VPC コネクタを選択したら、[プライベート IP へのリクエストのみを VPC にルーティングする] または [すべてのトラフィックを VPC にルーティングする] を選択します。
  5. [作成] または [デプロイ] をクリックします。

gcloud

下り(外向き)設定を指定するには、--vpc-egress フラグを使用します。デプロイ中に下り(外向き)設定を指定できます。

gcloud run deploy SERVICE \
--image IMAGE_URL \
--vpc-connector CONNECTOR_NAME \
--vpc-egress EGRESS_SETTING

次のように置き換えます。

  • SERVICE: 実際のサービスの名前。
  • IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG です。
  • CONNECTOR_NAME: コネクタの名前。
  • EGRESS_SETTING: 下り(外向き)設定値
    • all-traffic: コネクタ経由ですべてのアウトバンド トラフィックを送信します。
    • private-ranges-only: VPC コネクタ経由で内部アドレスにのみトラフィックを送信します。

既存のサービスを更新し、下り(外向き)設定を変更することもできます。

gcloud run services update SERVICE --vpc-egress EGRESS_SETTING

次のように置き換えます。

YAML

  1. 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. 最上位の spec 属性の下の annotations 属性にある run.googleapis.com/vpc-access-egress 属性を追加または更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
            run.googleapis.com/vpc-access-egress: EGRESS_SETTING
          name: REVISION

    次のように置き換えます。

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
    • CONNECTOR_NAME は、コネクタの名前に置き換えます。run.googleapis.com/vpc-access-connector 属性は、下り(外向き)設定を指定するときに必要です。
    • EGRESS_SETTING は、次のいずれかに置き換えます。
      • all-traffic: コネクタ経由ですべてのアウトバンド トラフィックを送信します。
      • private-ranges-only: VPC コネクタ経由で内部アドレスにのみトラフィックを送信します。
      • REVISION は、新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります
        • SERVICE- で始まる
        • 小文字、数字、- のみが使用されている
        • 末尾が - ではない
        • 63 文字以内である
  3. 次のコマンドを使用して、サービスを作成または更新します。

    gcloud run services replace service.yaml

下り(外向き)ジョブ トラフィックを制御する

VPC 下り(外向き)設定を指定するには、ジョブを作成または更新する際に、Google Cloud コンソール、Google Cloud CLI、または YAML ファイルを使用します。

コンソール

  1. Google Cloud コンソールで、Cloud Run の [ジョブ] ページに移動します。

    Cloud Run に移動

  2. [コンテナをデプロイ] をクリックし、[ジョブ] を選択して、ジョブの初期設定ページに入力します。既存のジョブを構成する場合は、ジョブを選択して [編集] をクリックします。

  3. [コンテナ、ボリューム、接続、セキュリティ] をクリックして、ジョブのプロパティ ページを開きます。

  4. [接続] タブをクリックします。

    イメージ

    • コネクタを選択したら、[プライベート IP へのリクエストのみを VPC にルーティングする] または [すべてのトラフィックを VPC にルーティングする] を選択します。
  5. [作成] または [更新] をクリックします。

gcloud

下り(外向き)設定を指定するには、--vpc-egress フラグを使用します。ジョブのデプロイ プロセス中に下り(外向き)設定を指定できます。

gcloud run jobs create JOB \
--image IMAGE_URL \
--vpc-connector CONNECTOR_NAME \
--vpc-egress EGRESS_SETTING

次のように置き換えます。

  • JOB: ジョブの名前。
  • IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式は LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG です。
  • CONNECTOR_NAME: コネクタの名前。
  • EGRESS_SETTING: 下り(外向き)設定値
    • all-traffic: コネクタ経由ですべてのアウトバンド トラフィックを送信します。
    • private-ranges-only: VPC コネクタ経由で内部アドレスにのみトラフィックを送信します。

既存のジョブを更新し、下り(外向き)設定を変更することもできます。

gcloud run jobs update JOB --vpc-egress EGRESS_SETTING

次のように置き換えます。

YAML

既存のジョブ構成をダウンロードして表示するには、gcloud run jobs describe --format export コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud run jobs replace コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドを使用して、ジョブを新しい構成に置き換えます。

    gcloud run jobs replace job.yaml
  2. 最上位の spec 属性の下の annotations 属性にある run.googleapis.com/vpc-access-egress 属性を追加または更新します。

    apiVersion: serving.knative.dev/v1
      kind: Job
      metadata:
        name: JOB
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
              run.googleapis.com/vpc-access-egress: EGRESS_SETTING

    次のように置き換えます。

    • JOB: Cloud Run ジョブの名前。
    • CONNECTOR_NAME は、コネクタの名前に置き換えます。run.googleapis.com/vpc-access-connector 属性は、下り(外向き)設定を指定するときに必要です。
    • EGRESS_SETTING は、次のいずれかに置き換えます。
      • all-traffic: コネクタ経由ですべてのアウトバンド トラフィックを送信します。
      • private-ranges-only: VPC コネクタ経由で内部アドレスにのみトラフィックを送信します。
  3. 次のコマンドを使用して、ジョブを新しい構成に置き換えます。

    gcloud run jobs replace job.yaml

コネクタ設定を表示する

サービスまたはジョブの現在のサーバーレス VPC アクセス コネクタの設定を表示するには、 Google Cloud コンソールまたは gcloud コマンドライン ツールを使用します。

コンソール

  1. Cloud Run に移動

  2. 目的のサービスまたはジョブをクリックして、詳細ページを開きます。

    • サービスの場合は、[リビジョン] タブをクリックします。

    • ジョブの場合は、[構成] タブをクリックします。

[ネットワーク] タブに、サーバーレス VPC アクセス コネクタの設定が表示されます。

gcloud

  1. サービスの設定を表示するには、次のコマンドを使用します。

    gcloud run services describe SERVICE
  2. ジョブの設定を表示するには、次のコマンドを使用します。

    gcloud run jobs describe JOB
  3. 返された構成で、サーバーレス VPC アクセス コネクタの設定を探します。

VPC ネットワークから切断する

サービスを接続解除する

Google Cloud コンソールまたは Google Cloud CLI を使用して、VPC ネットワークからサービスを切断できます。

コンソール

  1. Google Cloud コンソールで Cloud Run に移動します。

    Cloud Run に移動

  2. [コンテナをデプロイ] をクリックし、[サービス] を選択して、新しいサービスを構成します。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. 新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。

  4. [ネットワーキング] タブをクリックします。

    画像

    • [ネットワーク] フィールドで [なし] を選択して、VPC ネットワークからサービスを接続解除します。
  5. [作成] または [デプロイ] をクリックします。

gcloud

サービスを接続解除するには、次のフラグを指定して gcloud run services update コマンドを実行します。

gcloud run services update SERVICE --clear-vpc-connector
  • SERVICE は、実際のサービス名に置き換えます。

トラフィックがなく、接続解除されている場合でも、コネクタの料金は引き続き発生します。詳細については、料金をご覧ください。不要になったコネクタは削除して、請求が発生しないようにしてください。

ジョブを切断する

Google Cloud コンソールまたは Google Cloud CLI を使用して、VPC ネットワークからジョブを切断できます。

コンソール

  1. Google Cloud コンソールで、Cloud Run の [ジョブ] ページに移動します。

    Cloud Run に移動

  2. [コンテナをデプロイ] をクリックし、[ジョブ] を選択して、ジョブの初期設定ページに入力します。既存のジョブを構成する場合は、ジョブを選択して [編集] をクリックします。

  3. [コンテナ、ボリューム、接続、セキュリティ] をクリックして、ジョブのプロパティ ページを開きます。

  4. [接続] タブをクリックします。

    イメージ

    • [ネットワーク] フィールドで [なし] を選択して、VPC ネットワークからジョブを接続解除します。
  5. [作成] または [更新] をクリックします。

gcloud

ジョブを接続解除するには、次のフラグを指定して gcloud run jobs update コマンドを実行します。

--clear-vpc-connector

gcloud run jobs update JOB --clear-vpc-connector

JOB は、使用するジョブの名前に置き換えます。

トラフィックがなく、接続解除されている場合でも、コネクタの料金は引き続き発生します。詳細については、料金をご覧ください。不要になったコネクタは削除して、請求が発生しないようにしてください。

コネクタを更新する

Google Cloud コンソール、Google Cloud CLI または API を使用して、コネクタの次の属性を更新することや、モニタリングすることが可能です。

  • マシン(インスタンス)タイプ
  • インスタンスの最小数と最大数
  • 最近のスループット、インスタンス数、CPU 使用率

マシンタイプを更新する

コンソール

  1. サーバーレス VPC アクセスの概要ページに移動します。

    サーバーレス VPC アクセスに移動

  2. 編集するコネクタを選択して、[編集] をクリックします。

  3. [インスタンス タイプ] リストで、目的のマシン(インスタンス)タイプを選択します。使用可能なマシンタイプについては、スループットとスケーリングのドキュメントをご覧ください。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. コネクタのマシンタイプを更新するには、ターミナルで次のコマンドを実行します。

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
    次のように置き換えます。

    • CONNECTOR_NAME: コネクタの名前。
    • REGION: コネクタのリージョンの名前。
    • MACHINE_TYPE: 目的のマシンタイプ。使用可能なマシンタイプについては、スループットとスケーリングのドキュメントをご覧ください。

インスタンスの最小数と最大数を減らす

インスタンスの最小数と最大数を減らすには、次の操作を行います。

  1. 目的の値で新しいコネクタを作成します。
  2. 新しいコネクタを使用するようにサービスまたは関数を更新します。
  3. トラフィックを移行したら、古いコネクタを削除します。

インスタンスの最小数と最大数を増やす

コンソール

  1. サーバーレス VPC アクセスの概要ページに移動します。

    サーバーレス VPC アクセスに移動

  2. 編集するコネクタを選択して、[編集] をクリックします。

  3. [最小インスタンス数] フィールドに、目的のインスタンスの最小数を選択します。

    このフィールドに設定可能な最小値は現在の値です。このフィールドに設定可能な最大値は、[最大インスタンス数] フィールドの現在の値から 1 を引いた値になります。たとえば、[最大インスタンス数] フィールドの値が 8 の場合、[最小インスタンス数] フィールドに設定可能な最大値は 7 になります。

  4. [最大インスタンス数] フィールドでインスタンスの最大数を選択します。

    このフィールドに設定可能な最小値は現在の値です。このフィールドに設定可能な最大値は 10 です。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. コネクタのインスタンスの最小数または最大数を増やすには、ターミナルで次のコマンドを実行します。

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
    次のように置き換えます。

  • CONNECTOR_NAME: コネクタの名前。
  • REGION: コネクタのリージョンの名前。
  • MIN_INSTANCES: 目的の最小インスタンス数。
    • このフィールドに設定可能な最小値は min_instances の現在の値です。現在の値を確認するには、現在の属性値を確認するをご覧ください。
    • このフィールドに設定可能な最大値は、現在の max_instances の値から 1 を引いた値になります。これは、min_instancesmax_instances より小さくする必要があるためです。たとえば、max_instances が 8 の場合、このフィールドに設定可能な最大値は 7 です。コネクタがデフォルトの max-instances 値(10)を使用する場合、このフィールドに設定可能な最大値は 9 になります。max-instances の値を確認するには、現在の属性値を確認するをご覧ください。
  • MAX_INSTANCES:

    • このフィールドに設定可能な最小値は max_instances の現在の値です。現在の値を確認するには、現在の属性値を確認するをご覧ください。
    • このフィールドに設定可能な最大値は 10 です。

    インスタンスの最大数を増やさずに最小数だけを増やす場合でも、インスタンスの最大数を指定する必要があります。逆に、インスタンスの最小数を更新せずに最大数を更新する場合でも、インスタンスの最小数を指定する必要があります。インスタンスの最小数または最大数を現在の値のままにするには、現在の値を指定します。現在の値を確認するには、現在の属性値を確認するをご覧ください。

現在の属性値を確認する

コネクタの現在の属性値を確認するには、ターミナルで次のコマンドを実行します。

gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
次のように置き換えます。

  • CONNECTOR_NAME: コネクタの名前。
  • REGION: コネクタのリージョンの名前。
  • PROJECT: Google Cloud プロジェクトの名前。

コネクタの使用状況をモニタリングする

使用状況の推移をモニタリングすると、コネクタの設定を調整するタイミングを判断するのに役立ちます。たとえば、CPU 使用率が急激に上昇した場合は、より良い結果を得るためにインスタンスの最大数を増やすことができます。また、スループットが上限に近づいている場合は、より大きなマシンタイプに切り替えることができます。

Google Cloud コンソールを使用してコネクタのスループット、インスタンス数、CPU 使用率の指標の推移を表示するには:

  1. サーバーレス VPC アクセスの概要ページに移動します。

    サーバーレス VPC アクセスに移動

  2. モニタリングするコネクタの名前をクリックします。

  3. 表示日数を 1~90 日の間で選択します。

  4. [スループット] グラフで、グラフの上にポインタを置くと、コネクタの最近のスループットが表示されます。

  5. [インスタンス数] グラフで、グラフの上にポインタを置くと、コネクタによって最近使用されたインスタンスの数が表示されます。

  6. [CPU 使用率] グラフで、グラフの上にポインタを置くと、コネクタの最新の CPU 使用率が表示されます。グラフには、インスタンスの CPU 使用率の分布が表示されます(50、95、99 パーセンタイル)。

コネクタを削除する

コネクタを削除する前に、そのコネクタを使用しているサーバーレス リソースからコネクタを削除する必要があります。サーバーレス リソースからコネクタを削除する前にそのコネクタ自体を削除すると、後で VPC ネットワークを削除できなくなります。

共有 VPC ホスト プロジェクトでコネクタを設定した共有 VPC ユーザーの場合は、gcloud compute networks vpc-access connectors describe コマンドを使用して、特定のコネクタを使用するサーバーレス リソースが存在するプロジェクトの一覧を取得できます。

コネクタを削除するには、 Google Cloud コンソールまたは Google Cloud CLI を使用します。

コンソール

  1. Google Cloud コンソールで、サーバーレス VPC アクセスの概要ページに移動します。

    サーバーレス VPC アクセスに移動

  2. 削除するコネクタを選択します。

  3. [削除] をクリックします。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. コネクタを削除するには、次の gcloud コマンドを使用します。

    gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
    

    次のように置き換えます。

    • CONNECTOR_NAME は、削除するコネクタの名前に置き換えます。
    • REGION は、コネクタが配置されているリージョンに置き換えます。

プロジェクトのカスタム制約を管理する

このセクションでは、サーバーレス VPC アクセス コネクタのカスタム制約を作成し、プロジェクト レベルで適用する方法について説明します。カスタム組織のポリシーの詳細については、カスタム組織のポリシーの作成と管理をご覧ください。

Google Cloud 組織のポリシーを使用すると、組織のリソースをプログラマティックに一元管理できます。組織のポリシー管理者は組織のポリシーを定義できます。組織のポリシーは、Google Cloud リソース階層内のGoogle Cloud リソースやそれらのリソースの子孫に適用される、制約と呼ばれる一連の制限です。組織のポリシーは、組織レベル、フォルダレベル、またはプロジェクト レベルで適用できます。

組織のポリシーは、さまざまなGoogle Cloud サービスに事前に定義された制約を提供します。ただし、組織のポリシーで制限されている特定のフィールドをカスタマイズ可能な方法でより詳細に制御する必要がある場合は、カスタムの組織のポリシーを作成することもできます。

利点

サーバーレス VPC アクセスでは、Serverless VPC Access API でほとんどのユーザー構成フィールドを使用して、任意の数のカスタム制約を記述できます。たとえば、サーバーレス VPC アクセス コネクタが使用できるサブネットを指定して、カスタム制約を作成できます。

カスタム制約を適用するポリシーに違反するリクエストを送信すると、gcloud CLI と Serverless VPC Access ログにエラー メッセージが表示されます。エラー メッセージには、制約 ID と違反したカスタム制約の説明が含まれます。

ポリシーの継承

デフォルトでは、組織のポリシーは、そのポリシーを適用したリソースの子孫に継承されます。たとえば、フォルダにポリシーを適用した場合、 Google Cloud はそのフォルダ内のすべてのプロジェクトにそのポリシーを適用します。この動作の詳細と変更方法については、階層評価ルールをご覧ください。

制限事項

マシンタイプ、最小インスタンス数、最大インスタンス数は指定できません。

始める前に

組織 ID を確認します。

必要なロール

組織のポリシーを管理するために必要な権限を取得するには、組織のリソースに対する組織のポリシー管理者roles/orgpolicy.policyAdmin)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

カスタム制約を作成する

カスタム制約は、組織のポリシーを適用しているサービスでサポートされるリソース、メソッド、条件、アクションを使用して YAML ファイルで定義されます。カスタム制約の条件は、Common Expression Language(CEL)を使用して定義されます。CEL を使用してカスタム制約で条件を作成する方法については、カスタム制約の作成と管理の CEL セクションをご覧ください。

サーバーレス VPC アクセスのカスタム制約の YAML ファイルを作成するには、次の例をご覧ください。

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- vpcaccess.googleapis.com/Connector
methodTypes:
- CREATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

次のように置き換えます。

  • ORGANIZATION_ID: 組織 ID(123456789 など)。

  • CONSTRAINT_NAME: 新しいカスタム制約に付ける名前。カスタム制約は custom. で始まる必要があり、大文字、小文字、数字のみを含めることができます(例: custom.defaultNetworkConstraint.)。このフィールドの最大長は 70 文字です。接頭辞はカウントされません。

  • CONDITION: サポート対象のサービス リソースの表現に対して書き込まれる CEL 条件。このフィールドの最大長は 1,000 文字です。例: "resource.network == default"

  • ACTION: condition が満たされている場合に実行するアクション。ALLOW または DENY になります。

  • DISPLAY_NAME: 制約の名前。わかりやすい名前を入力してください。このフィールドの最大長は 200 文字です。

  • DESCRIPTION: ポリシー違反時にエラー メッセージとして表示される制約の説明。たとえば、「"Require network to not be set to default."」のようにわかりやすい説明を入力してください。このフィールドの最大長は 2,000 文字です。

カスタム制約の作成方法については、カスタム制約の定義をご覧ください。

カスタム制約を設定する

新しいカスタム制約の YAML ファイルを作成したら、組織内の組織のポリシーで使用できるように設定する必要があります。カスタム制約を設定するには、gcloud org-policies set-custom-constraint コマンドを使用します。
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
CONSTRAINT_PATH は、カスタム制約ファイルのフルパスに置き換えます。例: /home/user/customconstraint.yaml 完了すると、カスタム制約が組織のポリシーとして Google Cloud 組織のポリシーのリストに表示されます。カスタム制約が存在することを確認するには、gcloud org-policies list-custom-constraints コマンドを使用します。
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID は、組織リソースの ID に置き換えます。詳細については、組織のポリシーの表示をご覧ください。

カスタム制約を適用する

制約を適用するには、それを参照する組織のポリシーを作成し、その組織のポリシーを Google Cloud リソースに適用します。

コンソール

  1. Google Cloud コンソールで [組織のポリシー] ページに移動します。

    [組織のポリシー] に移動

  2. プロジェクト選択ツールで、組織のポリシーを設定するプロジェクトを選択します。
  3. [組織のポリシー] ページのリストで制約を選択して、その制約の [ポリシーの詳細] ページを表示します。
  4. このリソースの組織のポリシーを構成するには、[ポリシーを管理] をクリックします。
  5. [ポリシーの編集] ページで、[Override parent's policy] を選択します。
  6. [ルールを追加] をクリックします。
  7. [適用] セクションで、この組織のポリシーの適用を有効にするかどうかを選択します。
  8. 省略可: タグで組織のポリシーに条件を設定するには、[条件を追加] をクリックします。組織のポリシーに条件付きルールを追加する場合は、少なくとも 1 つは無条件のルールを追加する必要があります。そうしないとポリシーを保存できないのでご注意ください。詳細については、タグ付きの組織のポリシーの設定をご覧ください。
  9. [変更内容をテスト] をクリックして、組織のポリシーの効果をシミュレートします。以前のマネージド制約ではポリシー シミュレーションを使用できません。詳細については、Policy Simulator で組織のポリシーの変更をテストするをご覧ください。
  10. 組織のポリシーを完成させて適用するには、[ポリシーを設定] をクリックします。ポリシーが有効になるまでに最大 15 分かかります。

gcloud

ブール型ルールを含む組織のポリシーを作成するには、制約を参照するポリシー YAML ファイルを作成します。

      name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
    

次のように置き換えます。

  • PROJECT_ID: 制約を適用するプロジェクト。
  • CONSTRAINT_NAME: カスタム制約に定義した名前。たとえば、custom.defaultNetworkConstraint のようにします。

制約を含む組織のポリシーを適用するには、次のコマンドを実行します。

    gcloud org-policies set-policy POLICY_PATH
    

POLICY_PATH は、組織のポリシーの YAML ファイルのパスに置き換えます。ポリシーが有効になるまでに最大 15 分かかります。

カスタム制約をテストする

上り(内向き)設定を制限する例をテストするには、ネットワークを default に設定して、プロジェクトにコネクタをデプロイします。

gcloud compute networks vpc-access connectors create org-policy-test \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --network=default

次のような出力が表示されます。

Operation denied by custom org policies: ["customConstraints/custom.defaultNetworkConstraint": "Require network to not be set to default."]

一般的なユースケースのカスタム組織ポリシーの例

次の表に、サーバーレス VPC アクセス コネクタで役立つカスタム制約の例を示します。

説明 制約の構文
サーバーレス VPC アクセス コネクタが特定のネットワークのみを使用できるようにします。
    name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistNetworks
    resourceTypes:
    - vpcaccess.googleapis.com/Connector
    methodTypes:
    - CREATE
    condition: "resource.network == 'allowlisted-network'"
    actionType: ALLOW
    displayName: allowlistNetworks
    description: Require connectors to use a specific network.
説明 制約の構文
サーバーレス VPC アクセス コネクタが特定のサブネットにのみアクセスできるようにします。
    name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictSubnetForProject
    resourceTypes:
    - vpcaccess.googleapis.com/Connector
    methodTypes:
    - CREATE
    condition: "resource.subnet.name == 'allocated-subnet'"
    actionType: ALLOW
    displayName: restrictSubnetForProject
    description: This project is only allowed to use the subnet "allocated-subnet".

トラブルシューティング

サービス アカウントの権限

Google Cloud プロジェクトでオペレーションを実行するために、サーバーレス VPC アクセスはサーバーレス VPC アクセス サービス エージェントのサービス アカウントを使用します。このサービス アカウントのメールアドレスは、次の形式になります。

service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com

このサービス アカウントには、デフォルトでサーバーレス VPC アクセス サービス エージェントのロール(roles/vpcaccess.serviceAgent)が設定されています。このアカウントの権限を変更すると、サーバーレス VPC アクセスのオペレーションが失敗する可能性があります。

ネットワーク パフォーマンスが低い、または CPU 使用状況でアイドル状態が多い

数千のインスタンスに単一のコネクタを使用すると、パフォーマンスが低下し、CPU 使用状況でアイドル状態が増加する可能性があります。この問題を解決するには、複数のコネクタ間でサービスをシャーディングします。

カスタム MTU に関する問題

カスタム MTU で問題が発生した場合は、Cloud Run のデフォルトの MTU 設定を使用していることを確認してください。

エラー

サービス アカウントでサービス エージェントのロールが必要であるというエラー

リソース サービスの使用を制限する」という組織のポリシーの制約を使用して Cloud Deployment Manager(deploymentmanager.googleapis.com)をブロックすると、次のエラー メッセージが表示されることがあります。

Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.

組織のポリシーを設定して、拒否リストから Deployment Manager を削除するか、許可リストに追加します。

コネクタ作成エラー

コネクタの作成でエラーが発生した場合は、次の方法をお試しください。

  • VPC ネットワーク内で予約されている既存の IP アドレスと重複しない RFC 1918 の内部 IP 範囲を指定します。
  • プロジェクトから ID serverless-vpc-access-images で Compute Engine VM イメージを使用できるように、プロジェクトに権限を付与します。状況に応じて組織のポリシーを更新する方法については、イメージ アクセスの制約を設定するをご覧ください。

リソースにアクセスできない

コネクタを指定しても、VPC ネットワーク内のリソースにアクセスできない場合は、コネクタの IP アドレス範囲からの上り(内向き)を拒否する、優先度 1000 よりも小さいファイアウォール ルールが VPC ネットワーク上に存在しないことを確認してください。

共有 VPC サービス プロジェクトでコネクタを構成する場合は、ファイアウォール ルールでサーバーレス インフラストラクチャからコネクタへの上り(内向き)が許可されていることを確認してください。

接続拒否エラー

connection refused または connection timeout エラーが発生してネットワーク パフォーマンスが低下している場合は、サーバーレス アプリケーションの呼び出し間で接続が制限なしに増加している可能性があります。インスタンスごとに使用される最大接続数を制限するには、接続プールをサポートするクライアント ライブラリを使用します。接続プールの使用方法を説明する詳しい例については、データベース接続を管理するをご覧ください。

リソースが見つからないエラー

VPC ネットワークまたはファイアウォール ルールを削除すると、次のようなメッセージが表示される場合があります。The resource "aet-uscentral1-subnet--1-egrfw" was not found.

このエラーとその解決方法については、VPC ファイアウォール ルールのドキュメントのリソースが見つからないエラーをご覧ください。

次のステップ