4

我目前正在使用烧瓶为在 GKE 上运行的在线服务构建管理仪表板。

我想显示自本月初以来该服务已经累积了多少账单。我已经查看了 Google Cloud 计费 API,但这是一片血腥的丛林,我似乎找不到任何方法来检索我想要的数据。

我认为这应该是可能的,但我不知道如何。任何对谷歌云 API 更有经验的人可以帮助我,最好是使用 python 代码片段吗?

我已经查看了这篇文章中的答案,但无法真正弄清楚如何使用它们。

4

1 回答 1

4

官方文档:

开始使用 Cloud Billing Budget API

Cloud Billing 预算 API 设置

使用 Cloud Billing 预算 API

Cloud Billing 预算客户端库

使用 Cloud Billing Budget API 可以:

为您的每个 Google Cloud 项目创建单独的预算,以便您了解 Google Cloud 环境的哪些领域的支出超出预期。

在季度财务计划之后批量更新您的所有预算。

与您公司的部署经理集成,将预算创建添加到您的云配置工作流程中。

  1. 创建项目
  2. 启用计费
  3. 启用 API(Cloud Budget API、Cloud Billing Budget API)
  4. 创建预算、预算和警报、创建预算、范围、金额(上个月的支出)、操作
  5. 设置身份验证(创建服务帐户,授予服务帐户 Billing Account Administrator 角色,下载 key.json,设置环境变量 export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
  6. 使用客户端库Client for Cloud Billing Budget API

    from google.cloud import billing_budgets_v1beta1
    client = billing_budgets_v1beta1.BudgetServiceClient()
    
    #get all the budgets
    parent = client.billing_account_path([BILLING_ACCOUNT])
    for element in client.list_budgets(parent):
       print(element)
       pass
    
    #for a specific budget
    name = client.budget_path('[BILLING_ACCOUNT]', '[BUDGET]')
    response = client.get_budget(name)
    
    #The output should be in the form 
    
    display_name: "billing-budget"
    budget_filter {
    projects: "projects/"
    credit_types_treatment: 
    }
    amount {
    last_period_amount {
    }
    }
    threshold_rules {
    threshold_percent: 0.5
    spend_basis: CURRENT_SPEND
    }
    threshold_rules {
    threshold_percent: 0.9
    spend_basis: CURRENT_SPEND
    }
    threshold_rules {
    threshold_percent: 1.0
    spend_basis: CURRENT_SPEND
    }
    all_updates_rule {
    }
    etag: "" ```
    

编辑:

我检查了gcloud alpha billing命令,我只能看到选项:

    1. accounts(describe, get-iam-policy, list, projects(describe, link, list, unlink))

    2. budgets(create, delete, describe, list, update) 

    3. projects(describe, link, list, unlink). These are the API that you can call. 

没有 API 可以让我了解当前的支出。您可以将帐单导出到 BigQuery 或文件(已弃用)并进行分析。

于 2020-02-10T12:14:14.777 回答