Obtener información sobre los precios de Google Cloud disponible públicamente

En esta página, se muestra cómo usar la API Cloud Billing Catalog para realizar las siguientes acciones:

  • Obtiene una lista de todos los servicios públicos, incluidos los metadatos relevantes de cada servicio.
  • Obtener una lista de todos los SKUs públicos de un servicio, incluidos los siguientes:
    • Descripción del SKU con formato legible para humanos
    • Precios públicos del SKU
    • Regiones donde el SKU puede comprarse
    • Datos de categorización del SKU

Si tienes precios de contrato personalizados, puedes usar la API Pricing para obtener los precios aplicables a tu cuenta de Facturación de Cloud.

Antes de empezar

Para usar la API Catalog de Facturación de Cloud, primero debes habilitar la API Cloud Billing y obtener una clave de API.

Enable the Cloud Billing API.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the API

Cuando se te pida que confirmes el Google Cloud proyecto que quieres usar para la API Catalog de Facturación de Cloud, te recomendamos que uses un proyecto que esté configurado para cubrir todas tus necesidades de FinOps y administración de facturación de una cuenta de Facturación de Cloud, incluido el lugar en el que está habilitada la API de Facturación de Cloud.

Consulta más información sobre las ventajas de usar un proyecto centrado en FinOps en tus casos prácticos de administración de facturación.

Obtener una clave de API

Para llamar a la API Cloud Billing Catalog, se precisa una clave de API. Puedes consultar los detalles sobre las claves de API en el artículo Usar claves de API.

Mostrar los servicios públicos del catálogo

En este paso, obtendrás una lista de todos los servicios públicos con sus metadatos correspondientes.

En el siguiente fragmento de código se enumeran todos los servicios públicos del catálogo.

Solicitud:

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

Respuesta:

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

Donde:

  • [SERVICE_NAME] es el nombre de recurso del servicio.
  • [SERVICE_ID] es el identificador del servicio.
  • [DISPLAY_NAME] es el nombre del servicio con formato legible para humanos.

Los resultados se paginan y se limitan a 5000 SKUs por página. La respuesta incluye un nextPageToken que puedes usar para obtener los siguientes 5000 resultados. Para obtener el siguiente lote, define pageToken=[NEXT_PAGE_TOKEN]. Para reducir el número de SKUs por página, defina pageSize=[CUSTOM_PAGE_SIZE]. Cuando se hayan enumerado todos los elementos, no se devolverá ningún token.

Obtener la lista de SKUs de un servicio

Con el siguiente fragmento de código se muestran los SKU del servicio incluidos en el catálogo:

Petición:

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

Donde:

  • SERVICE_ID es el identificador del servicio principal.

Respuesta:

{
  "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]"
}

Donde:

  • [SKU_NAME] es el nombre del recurso del SKU con el formato services/{SERVICE_ID}/skus/{SKU_ID}.
  • [SKU_ID] es el identificador único del SKU.
  • [SKU_DESCRIPTION] es una descripción del SKU con formato legible para humanos.
  • [SVC_DISPLAY_NAME] es el nombre visible del servicio al que pertenece el SKU.
  • [FAMILY] es el tipo de producto al que hace referencia el SKU. Por ejemplo, "Compute" (Computación), "Storage" (Almacenamiento), "Network" (Red), etc.
  • [GROUP] es una clasificación de grupo de SKU relacionados. Por ejemplo, "RAM", "GPU", "Predicción", etc.
  • [USAGE] indica cómo se consume el SKU. Por ejemplo, "OnDemand", "Preemptible", "Commit1Mo", "Commit1Yr", etc.
  • [REGION] es la lista de regiones de servicio en las que se ofrece el SKU. Por ejemplo, "asia-east1".
  • [TIME] es una marca de tiempo que representa la hora a partir de la cual este precio entró en vigor. Tiene el formato 2014-10-02T15:01:23.045123456Z.
  • [SUMMARY] es un resumen de la información sobre precios con formato legible para humanos.
  • [USAGE_UNIT] es la abreviatura de la unidad de uso en la que se especifica el precio. Por ejemplo, usageUnit de "GiBy" significa que el uso se especifica en "gibibytes".
  • [USAGE_UNIT_DESCRIPTION] es la unidad de uso en un formato legible para las personas, como "gibibyte".
  • [BASE_UNIT] es la unidad base del SKU y es la unidad que se usa en las exportaciones de uso. Por ejemplo, baseUnit de "Por" significa que el uso se especifica en "Bytes".
  • [BASE_UNIT_DESCRIPTION] es la unidad base en formato legible. Por ejemplo, "byte".
  • [BASE_CONVERSION_FACTOR] es el factor de conversión para convertir el precio por usage_unit en precio por base_unit y para convertir el valor de start_usage en start_usage_amount en base_unit. Por ejemplo, start_usage_amount * base_unit_conversion_factor = start_usage_amount en base_unit.
  • [DISPLAY_QUANTITY] es la cantidad de unidades recomendada para mostrar información sobre los precios. Cuando se muestra información sobre los precios, se recomienda mostrar lo siguiente: (unitPrice * displayQuantity) per displayQuantity usageUnit. Este campo no afecta a la fórmula de precios y solo se muestra. Por ejemplo, si el valor de unitPrice es "0.0001 USD", el de usageUnit es "GB" y el de displayQuantity es "1000", la forma recomendada de mostrar la información de precios es "0.10 USD por 1000 GB".
  • El uso de [START_AMOUNT] se cobra a la tarifa solo después de que se haya consumido este importe. Por ejemplo, si startUsageAmount es 10, significa que el uso se cobrará al precio definido más abajo después de los primeros 10 usage_units.
  • [CURRENCY_CODE] es el código de moneda de tres letras definido en la norma ISO 4217.
  • [UNITS] representa las unidades enteras del importe. Por ejemplo, si currencyCode es "USD", una unidad equivale a un dólar estadounidense.
  • [NANOS] es el número de unidades nano (10^-9) del importe. Este valor debe estar comprendido entre -999.999.999 y +999.999.999, ambos incluidos. Si units es positivo, nanos debe ser positivo o cero. Si las unidades son cero, los nanos pueden ser positivos, cero o negativos. Si las unidades son negativas, los nanos deben ser negativos o cero.

El coste del SKU es units + nanos. Por ejemplo, un coste de 1,75 USD se representa como units=1 y nanos=750,000,000.

  • [AGGREGATION_LEVEL] es el nivel en el que se agrega el uso para calcular el coste. Los valores válidos son ACCOUNT, PROJECT y AGGREGATION_LEVEL_UNSPECIFIED.
  • [AGGREGATION_INTERVAL] es el intervalo en el que se agrega el uso para calcular el coste. Los valores válidos son DAILY, MONTHLY y AGGREGATION_INTERVAL_UNSPECIFIED.
  • [AGGREGATION_COUNT] es el número de intervalos que se deben sumar. Por ejemplo, si aggregationLevel es "DAILY" y aggregationCount es 14, la agregación se realizará durante 14 días.
  • [CONVERSION_RATE] es la tasa de conversión de la conversión de moneda, de USD a la moneda especificada en la solicitud. Si no se especifica la moneda, el valor predeterminado es 1.0.
  • [SERVICE_PROVIDER] identifica al proveedor del servicio Es "Google" para los servicios propios de Google Cloud Platform.
  • [TAXONOMY_TYPE] es el tipo de taxonomía geográfica de un SKU: GLOBAL, REGIONAL o MULTI_REGIONAL.
  • [REGION] es la lista de regiones asociadas a un SKU. Este campo está vacío en los SKUs globales, ya que están asociados a todas las regiones. Google Cloud

Los resultados se paginan y se limitan a 5000 SKUs por página. La respuesta incluye un nextPageToken que puedes usar para obtener los siguientes 5000 resultados. Para obtener el siguiente lote, define pageToken=[NEXT_PAGE_TOKEN]. Para reducir el número de SKUs por página, defina pageSize=[CUSTOM_PAGE_SIZE]. Cuando se hayan enumerado todos los elementos, no se devolverá ningún token.

La información sobre los precios y los SKUs también está disponible en el informe de la tabla de precios o en la página sobre cómo exportar datos de Facturación de Cloud a BigQuery.