获取公开提供的 Google Cloud 价格信息

本页面介绍了如何使用 Cloud Billing Catalog API 执行以下操作:

  • 获取包含所有公开服务的列表,其中包含每项服务的相关元数据。
  • 获取包含服务中所有公开 SKU 的列表,包括:
    • 直观易懂的 SKU 说明。
    • SKU 的公开价格。
    • 可购买 SKU 的区域。
    • SKU 的分类数据。

如果您有自定义合同价格,则可以使用 Pricing API 获取适用于 Cloud Billing 账号的价格。

准备工作

您需要先启用 Cloud Billing API 并获取 API 密钥,然后才能使用 Cloud Billing Catalog API。

Enable the Cloud Billing API.

Enable the API

当系统提示您确认要用于 Cloud Billing Catalog API 的 Google Cloud 项目时,我们建议您使用一个设置为包含 Cloud Billing 账号的所有 FinOps 和结算管理需求的项目,包括已启用 Cloud Billing API 的项目。

详细了解使用以 FinOps 为重点的项目来实现结算管理用例的好处。

获取 API 密钥

您必须要有 API 密钥才能调用 Cloud Billing Catalog API。您可以在使用 API 密钥中找到有关 API 密钥的详细信息。

列出目录中的公共服务

在此步骤中,您将获得包含所有公共服务的列表,包括每项服务的相关元数据。

以下代码段会列出目录中的所有公共服务。

请求:

GET https://cloudbilling.googleapis.com/v1/services?key=<var>API_KEY</var>

响应:

{
  "services": [
    {
      "name": "[SERVICE_NAME]",
      "serviceId": "[SERVICE_ID]",
      "displayName": "[DISPLAY_NAME]",
    },
    [...]
  ],
  "nextPageToken": "[NEXT_PAGE_TOKEN]"
}

其中:

  • [SERVICE_NAME] 是服务的资源名称。
  • [SERVICE_ID] 是服务的标识符。
  • [DISPLAY_NAME] 是人类可读的服务显示名称。

结果已分页,并且每页限制为 5000 个 SKU。该响应包含一个 nextPageToken,可用于获取接下来的 5000 个结果。如需提取下一批结果,请设置 pageToken=[NEXT_PAGE_TOKEN]。如需减少每页 SKU 的数量,请设置 pageSize=[CUSTOM_PAGE_SIZE]。列出所有项后,令牌不会返回。

获取服务的 SKU 列表

以下代码段将列出目录中指定服务的 SKU:

请求:

GET https://cloudbilling.googleapis.com/v1/services/SERVICE_ID/skus?key=<var>API_KEY</var>

其中:

  • SERVICE_ID 是父级服务的标识符。

响应:

{
  "skus": [
    {
        "name": "[SKU_NAME]",
        "skuId": "[SKU_ID]",
        "description": "[SKU_DESCRIPTION]",
        "category": {
            "serviceDisplayName": "[SVC_DISPLAY_NAME]",
            "resourceFamily": "[FAMILY]",
            "resourceGroup": "[GROUP]",
            "usageType": "[USAGE]",
        },
        "serviceRegions": [
          "[REGION]"
        ],
        "pricingInfo": [
          {
              "effectiveTime": "[TIME]",
              "summary": "[SUMMARY]",
              "pricingExpression": {
                  "usageUnit": "[USAGE_UNIT]",
                  "usageUnitDescription": "[USAGE_UNIT_DESCRIPTION]",
                  "baseUnit": "[BASE_UNIT]",
                  "baseUnitDescription": "[BASE_UNIT_DESCRIPTION]",
                  "baseUnitConversionFactor": [BASE_CONVERSION_FACTOR],
                  "displayQuantity": [DISPLAY_QUANTITY],
                  "tieredRates": [
                    {
                        "startUsageAmount": [START_AMOUNT],
                        "unitPrice": {
                            "currencyCode": "[CURRENCY_CODE]",
                            "units": [UNITS],
                            "nanos": [NANOS],
                        },
                    }
                  ],
              },
              "aggregationInfo": {
                  "aggregationLevel": enum("[AGGREGATION_LEVEL]"),
                  "aggregationInterval": enum("[AGGREGATION_INTERVAL]"),
                  "aggregationCount": [AGGREGATION_COUNT],
              },
              "currencyConversionRate": [CONVERSION_RATE],
          }
        ],
        "serviceProviderName": "[SERVICE_PROVIDER]",
        "geoTaxonomy": {
          "type": "[TAXONOMY_TYPE]",
          "regions": [
          "[REGION]"
        ]
      }
    }
  ],
  "nextPageToken": "[NEXT_PAGE_TOKEN]"
}

其中:

  • [SKU_NAME] 是 SKU 的资源名称,格式为:services/{SERVICE_ID}/skus/{SKU_ID}
  • [SKU_ID] 是 SKU 的唯一标识符。
  • [SKU_DESCRIPTION] 是直观易懂的 SKU 说明。
  • [SVC_DISPLAY_NAME] 是 SKU 所属服务的显示名称。
  • [FAMILY] 是 SKU 所指的产品类型。例如,“Compute”、“Storage”、“Network”等。
  • [GROUP] 是相关 SKU 的分组。例如,“RAM”、“GPU”、“Prediction”等。
  • [USAGE] 表示 SKU 的使用方式。例如,“OnDemand”、“Preemptible”、“Commit1Mo”、“Commit1Yr”等。
  • [REGION] 是提供 SKU 的服务区域的列表。例如,“asia-east1”。
  • [TIME] 是代表此价格生效时间的时间戳,格式为 2014-10-02T15:01:23.045123456Z
  • [SUMMARY] 是直观易懂的价格信息摘要。
  • [USAGE_UNIT] 是定价所依据的使用单位的简称。例如,“GiBy”这个 usageUnit 指用量以“GiB”为单位。
  • [USAGE_UNIT_DESCRIPTION] 是直观易懂的用量单位,例如“GiB”。
  • [BASE_UNIT] 是 SKU 的基本单位,也是用量导出操作中使用的单位。例如,baseUnit 为“By”表示用量以“字节”为单位。
  • [BASE_UNIT_DESCRIPTION] 是直观易懂的基本单位。例如,“字节”。
  • [BASE_CONVERSION_FACTOR] 是将每个 usage_unit 的价格转换为每个 base_unit 的价格以及将 start_usage_amount 转换为 base_unit 中的 start_usage_amount 的转换因子。例如,start_usage_amount * base_unit_conversion_factor = start_usage_amount in base_unit。
  • [DISPLAY_QUANTITY] 是显示价格信息时推荐使用的单位数量。在显示价格信息时,建议的显示方式为:(unitPrice * displayQuantity) per displayQuantity usageUnit。此字段不会影响价格公式,仅用于显示目的。例如,如果 unitPrice 为“0.0001 USD”,usageUnit 为“GB”,displayQuantity 为“1000”,则推荐的价格信息显示方式为“0.10 USD per 1000 GB”。
  • [START_AMOUNT] 表示只在消耗了此数额后才开始按费率计算使用费。例如,startUsageAmount 为 10 表示在前 10 个 usage_units 过后,用量按下方定义的价格计费。
  • [CURRENCY_CODE] 是 ISO 4217 中定义的由三个字母组成的货币代码。
  • [UNITS] 是金额的整数单位。例如,如果 currencyCode 是“USD”,则 1 单位就是一美元。
  • [NANOS] 是金额的纳诺 (10^-9) 单位数。这个值必须在 -999999999(含)和 +999999999(含)之间。如果单位数是正数,纳诺必须是正数或零。如果单位数为零,纳诺可以是正数、零或负数。如果单位数是负数,纳诺必须是负数或零。

SKU 的费用为 units + nanos。例如,费用 $1.75 表示为 units=1nanos=750,000,000

  • [AGGREGATION_LEVEL] 是指在哪个级别汇总用量以计算费用。有效值为 ACCOUNT、PROJECT 和 AGGREGATION_LEVEL_UNSPECIFIED。
  • [AGGREGATION_INTERVAL] 是汇总用量以计算费用时所依据的时间间隔。有效值为 DAILY、MONTHLY 和 AGGREGATION_INTERVAL_UNSPECIFIED。
  • [AGGREGATION_COUNT] 是汇总计算所涵盖的间隔数。例如,如果 aggregationLevel 为“DAILY”且 aggregationCount 为 14,则聚合将超过 14 天。
  • [CONVERSION_RATE] 是货币从美元转换为请求中指定币种的换算汇率。如果没有指定货币,则默认为 1.0。
  • [SERVICE_PROVIDER] 表示服务提供商。Google Cloud Platform 中第一方服务的此字段值为“Google”。
  • [TAXONOMY_TYPE] 是 SKU 的地理位置类目类型:GLOBALREGIONALMULTI_REGIONAL
  • [REGION] 是与 SKU 关联的区域列表。对于全球 SKU,此字段为空,因为它们与所有 Google Cloud 区域相关联。

结果已分页,并且每页限制为 5000 个 SKU。该响应包含一个 nextPageToken,可用于获取接下来的 5000 个结果。如需提取下一批结果,请设置 pageToken=[NEXT_PAGE_TOKEN]。如需减少每页 SKU 的数量,请设置 pageSize=[CUSTOM_PAGE_SIZE]。列出所有项后,令牌不会返回。

您也可以参阅价格表报告将 Cloud Billing 价格导出至 BigQuery,了解价格和 SKU 信息。