取得公開的 Google Cloud 定價資訊

本頁面說明如何使用 Cloud Billing Catalog API 進行下列操作:

  • 取得所有公用服務的清單,包括各項服務的相關中繼資料。
  • 取得服務中所有公開 SKU 的清單,包括:
    • 使用者可理解的 SKU 說明。
    • SKU 的公開價格。
    • 可購買 SKU 的區域。
    • SKU 的分類資料。

如果您有自訂合約價格,可以使用 Pricing API 取得適用於 Cloud Billing 帳戶的價格。

事前準備

如要使用 Cloud Billing Catalog API,請先啟用 Cloud Billing API 並取得 API 金鑰。

啟用 Cloud Billing API (如果尚未啟用)。

啟用 API 時所需的角色

如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

啟用 API

系統提示您確認要用於 Cloud Billing Catalog API 的 Google Cloud 專案時,建議您使用已設定的專案,保存 Cloud Billing 帳戶的所有 FinOps 和帳單管理必要元件,包括啟用 Cloud Billing API 的位置。

進一步瞭解使用以 FinOps 為重點的專案,對帳單管理用途有何好處。

取得 API 金鑰

呼叫 Cloud Billing Catalog API 需要 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 的專屬 ID。
  • [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 表示用量是以「Gibibytes」為單位。
  • [USAGE_UNIT_DESCRIPTION] 是使用量的單位,以使用者可判讀的形式表示,例如「Gibibyte」。
  • [BASE_UNIT] 是 SKU 的基本單位,也是用量匯出作業使用的單位。舉例來說,「By」的 baseUnit 表示用量是以「位元組」為單位。
  • [BASE_UNIT_DESCRIPTION] 是指人類可讀形式的基本單位。例如「位元組」。
  • [BASE_CONVERSION_FACTOR] 是轉換係數,用於將每 usage_unit 的價格轉換為每 base_unit 的價格,以及將 start_usage 金額轉換為以 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」,則建議的價格資訊顯示方式為「每 1000 GB 0.10 美元」。
  • [START_AMOUNT]:只有在耗用了這個數量的單位後,使用量才開始依費率計價。舉例來說,如果將 startUsageAmount 設為 10,則代表在使用了前 10 個 usage_units 之後,系統才會依照下述價格計價。
  • [CURRENCY_CODE] 為 ISO 4217 所定義的三碼貨幣代碼。
  • [UNITS] 為金額的整數單位。舉例來說,如果 currencyCode 為 USD,則 1 單位為一美元。
  • [NANOS] 為金額的十億分之一 (10^-9) 單位數量。這個值必須介於 -999,999,999 和 +999,999,999 (含) 之間。如果 units 為正值,nanos 必須為正值或零;如果 units 為零,則 nanos 可為正值、零或負值;如果 units 為負值,nanos 就必須為負值或零。

SKU 的費用為 units + nanos。舉例來說,1.75 美元的費用會以 units=1 和 nanos=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 的地理分類類型:GLOBAL、REGIONAL 或 MULTI_REGIONAL。
  • [REGION] 是與 SKU 相關聯的區域清單。如果是全球 SKU,這個欄位會是空白,因為這類 SKU 與所有 Google Cloud區域相關聯。

結果會分頁顯示,每頁最多 5000 個 SKU。回應包含 nextPageToken,可用於取得下 5000 筆結果。如要擷取下一批結果,請設定 pageToken=[NEXT_PAGE_TOKEN]。如要減少每頁的 SKU 數量,請設定 pageSize=[CUSTOM_PAGE_SIZE]。 列出所有項目後,系統不會傳回任何權杖。

您也可以查看價目表報表或匯出至 BigQuery 的 Cloud Billing 定價資料,藉此取得定價和 SKU 相關資訊。