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



创建了一个服务用户来管理项目下的地形,并将其命名为roles/owner。已为此地形用户创建密钥。

Terraform代码很简单:

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

只是创建了一个酒吧子主题。

terraform plan有效,但地形应用给了我:

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: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

为了继续调试,我使用console/GUI-->API&服务-->凭据-->创建凭据-->服务帐户密钥-->新建服务帐户(具有所有者角色)。有了这个新的服务密钥json文件,我可以毫无问题地运行我的terraform代码。

现在我的困惑是,为什么当我使用gcloud创建一个服务帐户并赋予它相同的角色时,它却不起作用?

您必须通过谷歌云启用pub/sub api,否则可能会使用terraform。

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

// 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的"谷歌云提供商"文档页面上详细阅读。

最新更新