首页 文章

GCP上的Terraform无法创建pubsub主题,声明权限被拒绝

提问于
浏览
1

创建了一个服务用户来管理项目下的terraform并给它 roles/owner . 为这个terraform用户创建了密钥 .

Terraform代码很简单:

resource "google_pubsub_topic" "my_topic" {
  name    = "my_topic"
  project = "${var.project_id}"
}

只是创建一个pub-sub主题 .

terraform plan 有效,但是terraform apply给了我:

google_pubsub_topic.my_topic:googleapi:错误403:用户未被授权执行此操作 . ,禁止

我甚至尝试过提供服务帐号 roles/pubsub.admin 我不知道's going on because my service account has the owner role associated with it yet it can' t创建了一个pubsub主题 .

有人可以帮我解决这个问题吗?

提前致谢 .

Edit (to expand on my comment about what worked) :我使用gcloud创建了服务帐户 .

gcloud iam service-accounts create terraform \
  --display-name "Terraform admin account"

gcloud projects add-iam-policy-binding myproject-182220 \
 --member serviceAccount:terraform@myproject-182220.iam.gserviceaccount.com \
 --role roles/owner

gcloud iam service-accounts keys create terraform-admin.json \
 --iam-account terraform@myproject-182220.iam.gserviceaccount.com

为了继续调试,我使用控制台/ GUI创建了一个新的服务帐户 - > API&Services - >凭据 - >创建凭证 - >服务帐户密钥 - >新服务帐户(具有所有者角色) . 使用这个新的服务密钥json文件,我能够毫无问题地运行我的terraform代码 .

现在我的困惑是,为什么这样做有效但是当我使用gcloud创建一个服务帐户并赋予它相同的角色时呢?

2 回答

  • 0

    您必须通过谷歌 Cloud 启用pub / sub api,或者可以使用terraform .

  • -1

    Google提供商的示例使用配置看起来更像:

    // Configure the Google Cloud provider
    provider "google" {
      credentials = "${file("account.json")}"
      project     = "my-gce-project"
      region      = "us-central1"
    }
    
    // Create a new instance
    resource "google_compute_instance" "default" {
      # ...
    }
    

    这可以在Terraform的"Google Cloud Provider"文档page中更详细地阅读 .

相关问题