Google cloud platform 使用Terraform创建GCP自定义IAM角色

Google cloud platform 使用Terraform创建GCP自定义IAM角色,google-cloud-platform,terraform,terraform-provider-gcp,Google Cloud Platform,Terraform,Terraform Provider Gcp,我正在尝试使用Terraform为我的实例在GCP中创建一个自定义IAM角色。AFIACT,下面的应该可以工作,但是它在我身上出错了,抱怨我想要包含的标准角色是无效的 resource "google_project_iam_custom_role" "my-instance-role" { role_id = "myInstanceRole" title = "My Instance Role" description = "my custom iam role

我正在尝试使用Terraform为我的实例在GCP中创建一个自定义IAM角色。AFIACT,下面的应该可以工作,但是它在我身上出错了,抱怨我想要包含的标准角色是无效的

resource "google_project_iam_custom_role" "my-instance-role" {
  role_id     = "myInstanceRole"
  title       = "My Instance Role"
  description = "my custom iam role"
  permissions = [
    "roles/storage.objectCreator", 
    "roles/cloudkms.cryptoKeyEncrypter"
  ]
}
以下是错误消息:

* google_project_iam_custom_role.my-instance-role: Error creating 
the custom project role My Instance Role: googleapi: Error 400: 
Permission roles/storage.objectCreator is not valid., badRequest

Terraform文档不是非常清晰,但从我所读到的来看,这应该是可行的。知道我做错了什么吗

好的。我想出来了。您不能在自定义角色中包含。您必须指定。我真正想做的是:

resource "google_project_iam_custom_role" "my-instance-role" {
  role_id     = "myInstanceRole"
  title       = "My Instance Role"
  description = "my custom iam role"
  permissions = [
    "storage.objects.create", 
    "cloudkms.cryptoKeyVersions.useToEncrypt"
  ]
}

这里的关键是预定义的GCP角色(如“roles/storage.objectCreator”)与单独使用这些权限之间的区别,后者是GCP权限的集合。在Terraform中创建自定义IAM角色时,必须指定要应用的单个服务级别权限,例如“storage.objects.create”。

答案似乎不完整,是问题的扩展(在这种情况下,编辑问题),还是描述不完整的解决方案?然后接受你自己的答案,这样我们就知道问题已经解决了。对不起,这是一个完整的答案,我已经接受了。我已经编辑了我的答案,希望能提供更多的清晰度。请让我知道你认为遗漏了什么。