【问题标题】:googleapi: Error 403: Permission 'cloudfunctions.functions.create' denied on resourcegoogleapi:错误 403:资源上的权限“cloudfunctions.functions.create”被拒绝
【发布时间】:2021-08-11 12:09:13
【问题描述】:

我正在尝试使用 terraform 创建 GCP 函数。使用 gcloud SDK 默认登录进行身份验证。

创建函数的代码:

resource "google_cloudfunctions_function" "test"{
  name = "python-app-function"
  project = var.projNumber
  region = "europe-central2"
  runtime = "python39"
  trigger_http = true
  source_archive_bucket = google_storage_bucket.bucket_for_python_application.name
  source_archive_object = google_storage_bucket.bucket_for_python_application.name
}

我知道source_archive_bucket = google_storage_bucket.bucket_for_python_application.name && source_archive_object = google_storage_bucket.bucket_for_python_application.name 不对。

但是 google api 甚至不允许我开始创建一个函数:

因为我使用 SDK 自动登录进行身份验证,所以我给了自己所有可能的角色:

Owner 角色已经拥有此权限:

我被困住了。

【问题讨论】:

  • 您确定在运行terraform 时通过了正确的用户身份验证吗?你完成了gcloud auth application-default login (registry.terraform.io/providers/hashicorp/google/latest/docs/…) 吗?
  • 是的,我完全使用gcloud auth application-default login通过SDK登录。
  • 您是否可以创建其他资源,例如存储桶?所有者角色足以创建存储桶。
  • 抱歉,我指的是项目 ID,而不是名称。奇怪的是你对其他资源没有问题。您是否在其他资源中指定了project?或者,也许您已经在 provider 块中设置了它?
  • 这确实有效。非常感谢!

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


【解决方案1】:

您的资源定义中的project 字段应设置为项目ID,而不是项目编号(假设var.projNumber 是您的项目编号)。

顺便说一句,如果您正在处理单个项目,您可以将项目直接放在您的提供程序块上,从而避免在您的所有资源中重复项目 ID:

provider "google" {
  project = "my-project-id"
  region  = "us-central1"
}

【讨论】:

    猜你喜欢
    • 2020-11-23
    • 2016-04-21
    • 2021-12-29
    • 2022-07-25
    • 2015-05-26
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多