Google cloud platform GCP上的Terraform无法创建pubsub主题,表示权限被拒绝

Google cloud platform GCP上的Terraform无法创建pubsub主题,表示权限被拒绝,google-cloud-platform,terraform,Google Cloud Platform,Terraform,创建了一个服务用户来管理项目下的terraform,并为其指定了角色/所有者。已为此terraform用户创建密钥 地形代码很简单: resource "google_pubsub_topic" "my_topic" { name = "my_topic" project = "${var.project_id}" } 只是创建一个酒吧子主题 terraform plan可行,但terraform apply给了我: google_pubsub_topic.my_topic:go

创建了一个服务用户来管理项目下的terraform,并为其指定了
角色/所有者
。已为此terraform用户创建密钥

地形代码很简单:

resource "google_pubsub_topic" "my_topic" {
  name    = "my_topic"
  project = "${var.project_id}"
}
只是创建一个酒吧子主题

terraform plan
可行,但terraform apply给了我:

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

我甚至尝试过给服务帐户
角色/pubsub.admin
我不知道发生了什么,因为我的服务帐户有与之关联的所有者角色,但它无法创建pubsub主题

有人能帮我弄清楚吗

提前谢谢

编辑(扩展我对工作内容的评论): 我已经使用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创建一个服务帐户并赋予它相同的角色时却不行

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

// 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云提供商”文档中更详细地阅读

您必须通过谷歌云启用发布/订阅api,或者可以使用terraform。

您可以运行
gcloud
来创建此主题吗?我想你也会犯同样的错误。仔细检查您是否获得了正确的权限。我使用我的用户帐户运行gcloud和创建主题没有问题。我不确定如何将gcloud与服务帐户凭据一起使用。显然,我可以使用python中的服务帐户或其他东西来创建pubsub,看看是否会出现相同的错误。我的用户帐户在项目中也具有“所有者”角色,与服务帐户相同。我尝试使用具有所有者角色的相同服务帐户创建其他资源,但我的权限仍然被拒绝。我不确定需要做什么来创建一个服务帐户,以便使用terraform创建资源。我的服务帐户是使用gcloud cli创建的,然后绑定到该帐户的角色/所有者也使用相同的gcloud cli创建的。此外,我还使用cli获得了密钥。为了进行测试,我从Api&Services菜单->credentails->create new key and service account创建了一个帐户。使用cli中新创建的帐户,一切正常。更正上述注释:UIT中新创建的帐户这根本没有回答问题。感谢您的回答,但服务帐户已获得授权且api已启用。这是一个很老的问题,我没有得到任何答案,从用户界面上解决它为我解决了。