GCP上的Terraform未能创建pubsub主题,声明权限被拒绝
创建服务用户以管理该项目下的terraform并将其授予roles/owner
。为这个terraform用户创建了关键字。GCP上的Terraform未能创建pubsub主题,声明权限被拒绝
Terraform代码很简单:
resource "google_pubsub_topic" "my_topic" {
name = "my_topic"
project = "${var.project_id}"
}
只创建一个发布 - 订阅话题。
terraform plan
的作品,但terraform申请给我:
google_pubsub_topic.my_topic:googleapi:错误403:用户无权执行此操作时,禁止
我都甚至试图给该服务。帐户roles/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:[email protected] \
--role roles/owner
gcloud iam service-accounts keys create terraform-admin.json \
--iam-account [email protected]
继续我的调试,我使用控制台/ GUI创建了一个新的服务帐户 - > API &服务 - >凭证 - >创建凭据 - >服务帐户键 - >新的服务帐户(拥有所有者角色)。有了这个新的服务密钥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“谷歌云供应商”的文件page读取。
新创建的帐户这根本不回答问题。 – Amit
你可以运行'gcloud'创建这个主题吗?我想你会得到同样的错误。仔细检查你是否获得了正确的许可。 – BMW
我没有问题与我的用户帐户运行gcloud并创建主题。我不确定我如何使用gcloud和服务帐户凭证。我显然可以在Python或其他东西中使用服务帐户来创建pubsub,看看我是否得到相同的错误。我的用户帐户在项目上也具有“所有者”角色,与服务帐户相同 – Amit
我尝试使用拥有者角色创建具有相同服务帐户的其他资源,但仍然拒绝了权限。我不确定我需要做些什么来创建一个服务帐户,我可以使用这个帐户来创建terraform资源。 – Amit