業界・業務から探す
導入目的・課題から探す
データ・AIについて学ぶ
News
Hakkyについて
ウェビナーコラム
◆トップ【Hakkyの社内Wiki】Strapi
クラウドとオンプレの違いAIシステム導入時におすすめのクラウドシステムスクレイピングのためのプロキシサーバのAPI
TerraformでGCPからAWSのリソースにアクセスするGoogle Cloudとは?
AI

執筆者:Handbook編集部

Cloud Runからのインターネット接続に静的IPを使用する

はじめに

この記事ではCloud NatとCloud Routerを使用してCloud Runでインターネットに接続するときのパブリックIPを固定する方法を解説します。 リソースの管理には terraform を使用します。

アーキテクチャ図

サブネットワークの作成

サーバーレス VPC アクセス コネクタのサブネットワークを作成して、VPC 内に存在する他のコンピューティング リソースが、インターネットにアクセスするために構成した静的 IP を誤って使用しないようにします。

1. プロバイダーを設定

provider "google-beta" {
  project = "project_id"
}

2. 使用するVPCネットワークを作成

resource "google_compute_network" "default" {
    name     = "cr-static-ip-network"
}

3. サーバーレス VPC アクセス コネクタ用の VPC にサブネットワークを作成

resource "google_compute_subnetwork" "default" {
  name          = "cr-static-ip" # サブネット名
  ip_cidr_range = "192.168.0.0/28" # CIDR 範囲
  network       = google_compute_network.default.id
  region        = "us-central1" # Google Cloud リージョン
}

サーバーレス VPC アクセス コネクタの作成

Cloud Run サービスの送信トラフィックを VPC ネットワークにルーティングするには、サーバーレス VPC アクセス コネクタが必要です。

1. サーバーレス VPC アクセス コネクタを作成

resource "google_project_service" "vpc" {
  service            = "vpcaccess.googleapis.com"
  disable_on_destroy = false
}

resource "google_vpc_access_connector" "default" {
  name     = "cr-conn" # サーバーレス VPC アクセス コネクタの名前
  region   = "us-central1"

  subnet {
    name = google_compute_subnetwork.default.name
  }

  # Wait for VPC API enablement
  # before creating this resource
  depends_on = [
    google_project_service.vpc
  ]
}

ネットワーク アドレス変換(NAT)の構成

サーバーレス VPC アクセス コネクタを使用すると、Cloud Run サービスからのリクエストは VPC ネットワークに到達します。静的 IP を介して外部エンドポイントに送信リクエストをルーティングするには、Cloud NAT ゲートウェイを構成する必要があります。

1. NAT ゲートウェイをプログラムする新しい Cloud Router を作成

resource "google_compute_router" "default" {
  name     = "cr-static-ip-router" # サブネット名
  network  = google_compute_network.default.name
  region   = google_compute_subnetwork.default.region
}

2. 静的 IP アドレスを予約

resource "google_compute_address" "default" {
  name     = "cr-static-ip-addr" # サブネット名
  region   = google_compute_subnetwork.default.region
}

3. Cloud NAT ゲートウェイの構成

作成した静的 IP アドレスを使用して VPC ネットワークからのトラフィックをルーティングするように、このルーターに Cloud NAT ゲートウェイの構成を作成します。

resource "google_compute_router_nat" "default" {
  name     = "cr-static-nat" # Cloud NAT ゲートウェイ名
  router   = google_compute_router.default.name
  region   = google_compute_subnetwork.default.region

  nat_ip_allocate_option = "MANUAL_ONLY"
  nat_ips                = [google_compute_address.default.self_link]

  source_subnetwork_ip_ranges_to_nat = "LIST_OF_SUBNETWORKS"
  subnetwork {
    name                    = google_compute_subnetwork.default.id
    source_ip_ranges_to_nat = ["ALL_IP_RANGES"]
  }
}

VPC ネットワーク経由での Cloud Run トラフィックのルーティング

NAT が構成されたら、サーバーレス VPC アクセス コネクタを使用して Cloud Run サービスをデプロイし、VPC ネットワーク経由ですべてのトラフィックをルーティングするように VPC 下り(外向き)を設定します。

resource "google_cloud_run_v2_service" "default" {
  name     = "cr-static-ip-service"
  location = google_compute_subnetwork.default.region

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello" # コンテナ イメージ
    }
    scaling {
      max_instance_count = 5
    }
    vpc_access {
      connector = google_vpc_access_connector.default.id
      egress    = "ALL_TRAFFIC"
    }
  }
  ingress = "INGRESS_TRAFFIC_ALL"

}

静的外部 IP の確認

サービスで使用されている送信元 IP アドレスを確認するには、元の IP アドレスを表示する API またはウェブサイト(curlmyip.org など)に対してリクエストを送信します。

まとめ

本記事では Cloud Run でインターネットに接続するときのパブリックIPを固定する方法を解説しました。 IP固定はアクセス制限のかかった外部Web APIへのリクエストを行う際などに有効です。

参考

info
備考

Hakky ではエンジニアを募集中です!まずは話してみたいなどでも構いませんので、ぜひお気軽に採用ページからお問い合わせくださいませ。

2025年06月15日に最終更新
読み込み中...