我尝试使用 Terraform 在 GCP 上自动创建共享 VPC。我已启用对我的服务帐户的所有访问权限(组织管理员、XpnAdmin、存储管理员、计算管理员、计费管理员)
但是当我执行 terraform apply 时,它抛出了以下错误:
缺少“billingAccounts/CXXXXXXXXXXXXXXXXXX”的权限:billing.resourceAssociations.create
我指的是此演示的 Google 提供商 Github 代码。
您很可能拥有计费管理员,但您还需要能够创建计费分配或“计费项目经理”。
https://cloud.google.com/billing/v1/how-tos/access-control
Cloud Billing 帐户上的billing.resourceAssociations.create 和 resourcemanager.projects.createBillingAssignment。
有一些方便的代码来引导服务帐户 - Google Project Factory - 您可能想看看。创建 SA 后,您就不应该遇到权限问题
当我的 Terraform 配置中有旧的(已删除的)计费帐户 ID 时,我收到此错误。
我也遇到了同样的问题。您现在可以使用此
gcloud
CLI 命令将角色分配给身份(截至撰写本文时仍处于 alpha 阶段):
gcloud alpha billing accounts add-iam-policy-binding 123456-ABCDEF-123ABD \
--member "serviceAccount:youserviceaccount@projectID-of-the-serviceaccount.iam.gserviceaccount.com" \
--role="roles/billing.user"
https://cloud.google.com/sdk/gcloud/reference/alpha/billing/accounts/add-iam-policy-binding
当您登录计算机/笔记本电脑并设置默认凭据来运行 terraform 时,通常会出现此错误。此后,您获得了新帐户或被要求使用新帐户,并且您使用 gcloud auth login / 或 gcloud auth application-default login 进行身份验证。这仍将使用之前的帐户计费帐户。建议首次使用 Google CloudShell 运行 terraform 脚本。