google-cloud-platform - 无法使用 Terraform 在 Cloud Run 上部署公共(public) API

标签 google-cloud-platform terraform terraform-provider-gcp

Terraform 现在支持云运行,如文档所述 here ,
我正在尝试下面的示例代码。

resource "google_cloud_run_service" "default" {
  name     = "tftest-cloudrun"
  location = "us-central1"
  provider = "google-beta"

  metadata {
    namespace = "my-project-name"
  }

  spec {
    containers {
      image = "gcr.io/cloudrun/hello"
    }
  }
}

尽管它没有错误地部署示例 hello 服务,但当我访问自动生成的 URL 时,它返回 403(Forbidden) 响应。
是否可以使用 terraform 创建公共(public)云运行 api?

(当我使用 GUI 创建相同的服务时,GCP 在“身份验证”部分下提供“允许未经身份验证的调用”选项,但在 terraform 文档中似乎没有等效选项......)

enter image description here

最佳答案

只需将以下代码添加到您的 terraform 脚本中,即可公开访问

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
}

您还可以找到 here

关于google-cloud-platform - 无法使用 Terraform 在 Cloud Run 上部署公共(public) API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57885584/

相关文章:

google-cloud-platform - 如何删除Google Cloud Platform项目中默认激活的API?

azure - Terraform - 获取存储帐户的主要静态网站端点

google-cloud-platform - 使用 Terraform 创建 Google Cloud sql 表

google-cloud-platform - 在 GCP 中创建 IAM 成员会引发错误策略大小太大

linux - Google Cloud Run 和系统功能

google-cloud-platform - 访问/管理 map 自动完成等 API 服务需要哪些 GCP IAM 权限?

azure - 如何循环遍历 terraform 中的对象列表?

yaml - 如何删除 Terraform 双引号?

google-cloud-platform - 使用 terraform 自动创建防火墙规则以及 Dataproc 集群创建

go - 云 Spanner IAM 权限被拒绝