我正在尝试在新的GCP项目中使用Terraform创建资源。为此,我想将roles/storage.legacyBucketWriter
设置为Google托管服务帐户,该帐户针对特定存储桶运行存储转移服务作业(模式为project-[project-number]@storage-transfer-service.iam.gserviceaccount.com
)。我正在使用以下配置:
resource "google_storage_bucket_iam_binding" "publisher_bucket_binding" {
bucket = "${google_storage_bucket.bucket.name}"
members = ["serviceAccount:project-${var.project_number}@storage-transfer-service.iam.gserviceaccount.com"]
role = "roles/storage.legacyBucketWriter"
}
为了阐明这一点,我想这样做,以便在使用JSON API创建一次性转移作业时,它不会失败前提条件检查。
运行Terraform apply时,我得到以下信息:
Error applying IAM policy for Storage Bucket "bucket":
Error setting IAM policy for Storage Bucket "bucket": googleapi:
Error 400: Invalid argument, invalid
我认为这是因为相关的服务帐户尚不存在,因为我也无法通过控制台进行此操作。
是否需要启用其他服务才能创建服务帐户?
答案 0 :(得分:2)
运行此命令后,似乎可以创建/查找服务帐户了:
https://cloud.google.com/storage/transfer/reference/rest/v1/googleServiceAccounts/get
为我的项目获取电子邮件地址。
不确定这是否是最好的方法,但它是否有效。