【问题标题】:Link a GCP project to a billing account using a service account使用服务帐号将 GCP 项目关联到结算帐号
【发布时间】:2022-01-24 17:20:58
【问题描述】:

我正在尝试使用 GCP 的 API 创建一个新项目并将其链接到一个结算帐户。

我有一个用于向 GCP 进行身份验证的服务帐户,该服务帐户是 project1 的一部分。

此服务帐户在组织级别具有以下权限:

  • 结算帐户用户
  • 项目计费经理

我还尝试将此服务帐户提供给Organization Administrator,但这并没有帮助,因为这不是权限问题。

我使用 API 创建了一个新项目 - project 2,并且能够为 project 2 启用 Cloud Billing API 和 Deployment Manager API。

由于某种原因,当我尝试关注 API reference 上关于如何为 GCP 项目启用计费时,请求失败并显示 403(权限被拒绝)。

这是我尝试提出的示例请求:

curl --location --request PUT 'https://cloudbilling.googleapis.com/v1/projects/project2/billingInfo' --header 'Authorization: Bearer ya29.blablabla' --header 'Content-Type: application/json' --data-raw '{"billingAccountName": "billingAccounts/1234-9248-4321"}'

此请求失败的原因是由于某种原因它试图将project1(服务帐户所在的位置)链接到此结算帐户,而不是project2

这是我得到的回复:

{ “错误”:{ “代码”:403, "message": "Cloud Billing API 之前没有在 project1_number 项目中使用过或被禁用。通过访问启用它 https://console.developers.google.com/apis/api/cloudbilling.googleapis.com/overview?project=project1_number 然后重试。如果您最近启用了此 API,请等待几分钟 传播到我们的系统并重试的操作。", “状态”:“PERMISSION_DENIED”, “细节”: [ { "@type": "type.googleapis.com/google.rpc.Help", “链接”:[ { "description": "谷歌开发者控制台 API 激活", “网址”:“https://console.developers.google.com/apis/api/cloudbilling.googleapis.com/overview?project=project1_number” } ] }, { "@type": "type.googleapis.com/google.rpc.ErrorInfo", “原因”:“SERVICE_DISABLED”, “域”:“googleapis.com”, “元数据”:{ “服务”:“cloudbilling.googleapis.com”, “消费者”:“项目/project1_number” } } ] } }

如果我尝试为 project1 启用计费 API,我开始收到 400 条“意外令牌”消息。

有没有办法(使用 API)使用位于 project1 上的服务帐户将 project2 链接到我的结算帐户?

【问题讨论】:

    标签: api google-cloud-platform google-cloud-billing


    【解决方案1】:

    你有两个问题:

    1. Billing API 未启用。
    2. 服务帐号无权访问 Billing API。

    要启用 Billing API,您必须使用具有 Service Usage Adminroles/serviceusage.serviceUsageAdmin

    角色的身份

    使用 Google Cloud Console GUI 或使用 CLI 示例:

    gcloud services enable cloudbilling.googleapis.com
    

    有没有办法(使用 API)将 project2 链接到我的结算帐户 使用驻留在 project1 上的服务帐号?

    使用 API,否。使用 GUI,是。要允许服务帐户访问计费帐户,您必须在计费帐户 GUI 中完成此任务。对于个人 Google Cloud 帐户,您不能添加其他成员(限制为一个身份)。

    提示:如果您希望能够访问结算数据,那么您将无法访问。相反,启用 Google Cloud Billing 导出到 BigQuery,然后执行查询以检索结算数据。

    【讨论】:

    • 嘿,约翰,正如我在问题末尾提到的,我确实启用了计费 API,这导致我使用“无效令牌”获得 400 个。我还提到,除了您指定的权限之外,服务帐户在组织级别被授予“组织管理员”,所以我相信权限不是问题。我可以使用 Cloud Billing API C# 库解决这个问题,但我仍然无法判断我的 API 调用出了什么问题。
    • @ShacharAshkenazi - 您的问题是“如果我尝试启用计费 API ..*。请参阅我的观点 #1。组织管理员与将成员添加到结算帐户无关。请参阅我的第 2 点。 Google 结算帐户不属于 Google Cloud Platform 项目或组织。它们是独立管理的。您将项目与结算帐号相关联。
    • 您是否尝试过模拟您的服务帐户以在不同的项目中工作? cloud.google.com/iam/docs/…
    • @JohnHanley 正如我所说,我解决了你的两个观点,但问题是主要问题是它试图将错误的项目链接到我的结算帐户。
    • @ShacharAshkenazi - 该服务是否已经是计费帐户的成员?项目不链接计费帐户。只有结算帐户可以链接到项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 2021-03-08
    • 1970-01-01
    • 2022-12-29
    • 2023-01-25
    相关资源
    最近更新 更多