概要
やりたいこと
Terraform を使って GCP の Cloud Run をデプロイする。
チュートリアル
Terraform 用サービスアカウント作成
下記を参考に terraform init まで行う。
Terraform で Cloud Run デプロイ
公式サンプルを参考。Cloud Run は未認証でアクセスできるようにする。
vi cloudrun.tf
- noauth により未認証アクセス可とする
resource "google_cloud_run_service" "default" {
  name     = "cloudrun-srv"
  location = "us-central1"
  template {
    spec {
      containers {
        image = "gcr.io/cloudrun/hello"
      }
    }
  }
}
data "google_iam_policy" "noauth" {
  binding {
    role = "roles/run.invoker"
    members = [
      "allUsers",
    ]
  }
}
resource "google_cloud_run_service_iam_policy" "noauth" {
  location    = google_cloud_run_service.default.location
  project     = google_cloud_run_service.default.project
  service     = google_cloud_run_service.default.name
  policy_data = data.google_iam_policy.noauth.policy_data
}
デプロイする。
terraform apply
GCP コンソールより作成されたことを確認。

作成されたサービスを選択する。URL を確認できる。

発行された URL にアクセスできることを確認。

検証が終わった後は削除しておくこと。
terraform destroy
エラー
Error: Error setting IAM policy for cloudrun service “v1/projects/<PROJECT_ID>/locations/us-central1/services/cloudrun-srv”: googleapi: Error 403: The caller does not have permission
noauth を指定しない Cloud Run の URL にアクセスすると発生するエラー。
Terraform の一番ベーシックなコードだけだと認証が必要な Cloud Run ができる。
resource "google_cloud_run_service" "default" {
  name     = "cloudrun-srv"
  location = "us-central1"
  template {
    spec {
      containers {
        image = "gcr.io/cloudrun/hello"
      }
    }
  }
  traffic {
    percent         = 100
    latest_revision = true
  }
}
以下のようにサービス自体は作成される。

ただし、URL へのアクセス権限がないためアクセスできかった。

Noauth を指定すると URL にアクセスできる。
data "google_iam_policy" "noauth" {
  binding {
    role = "roles/run.invoker"
    members = [
      "allUsers",
    ]
  }
}
resource "google_cloud_run_service_iam_policy" "noauth" {
  location    = google_cloud_run_service.default.location
  project     = google_cloud_run_service.default.project
  service     = google_cloud_run_service.default.name
  policy_data = data.google_iam_policy.noauth.policy_data
}
認証ありでのアクセスは今度
 
  
  
  
  
コメント