Esta página te muestra cómo usar la API de Catalog de Cloud Billing para lo siguiente:
- Obtener una lista de todos los servicios públicos, incluidos los metadatos relevantes de cada servicio
- Obtener una lista de todos los SKU públicos de un servicio en la que se incluya esta información:
- Una descripción legible del SKU
- El precio público del SKU
- Las regiones donde el SKU está disponible para la compra
- Datos de categorización acerca del SKU
Si tienes precios de contrato personalizados, puedes usar la API de Pricing para obtener los precios que se aplican a tu cuenta de Facturación de Cloud.
Antes de comenzar
Enable the Cloud Billing API.
Para llamar a la API del catálogo de Billing, se necesita una clave de API. Encontrarás información al respecto en Usa claves de API.
Muestra una lista de servicios públicos del catálogo
En este paso, obtendrás una lista de todos los servicios públicos junto con metadatos acerca de cada uno.
En el siguiente fragmento de código, se enumeran todos los servicios públicos incluidos en el 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]"
}
Aquí:
[SERVICE_NAME]
es el nombre del recurso correspondiente al servicio.[SERVICE_ID]
es el identificador del servicio.[DISPLAY_NAME]
es el nombre comercial legible del servicio.
Los resultados se paginan y se limitan a 5, 000 SKU por página. La respuesta incluye un nextPageToken
que puedes usar para obtener los siguientes 5,000 resultados.
Para recuperar el siguiente lote, establece pageToken=[NEXT_PAGE_TOKEN]
.
Para reducir la cantidad de SKU por página, establece pageSize=[CUSTOM_PAGE_SIZE]
.
Cuando se enumeran todos los elementos, no se muestra ningún token.
Obtén la lista de los SKU de un servicio
El siguiente fragmento de código genera una lista de los SKU incluidos en el catálogo en relación con el servicio especificado:
Solicitud:
GET https://cloudbilling.googleapis.com/v1/services/SERVICE_ID/skus?key=<var>API_KEY</var>
Aquí:
SERVICE_ID
es el identificador del servicio superior.
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]"
}
Aquí:
[SKU_NAME]
es el nombre del recurso para el SKU con el formatoservices/{SERVICE_ID}/skus/{SKU_ID}
.[SKU_ID]
es el identificador único del SKU.[SKU_DESCRIPTION]
es una descripción legible del SKU.[SVC_DISPLAY_NAME]
es el nombre visible del servicio al que pertenece el SKU.[FAMILY]
es el tipo de producto al que se refiere el SKU. Por ejemplo, “Compute”, “Storage”, “Network”, etcétera.[GROUP]
es una clasificación grupal de los SKU relacionados. Por ejemplo, “RAM”, “GPU”, “Prediction”, etcétera.[USAGE]
representa cómo se consume el SKU. Por ejemplo, “OnDemand”, “Preemptible”, “Commit1Mo”, “Commit1Yr”, etcétera.[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 y tiene el formato2014-10-02T15:01:23.045123456Z
.[SUMMARY]
es un resumen legible de la información de precios.[USAGE_UNIT]
es una abreviatura de la unidad de uso en la que se especifica el precio. Por ejemplo, siusageUnit
es “GiBy”, significa que el uso se especifica en “Gibibytes”.[USAGE_UNIT_DESCRIPTION]
es la unidad de uso en formato legible (por ejemplo, “Gibibyte”).[BASE_UNIT]
es la unidad base del SKU y es la unidad que se usa en las exportaciones de uso. Por ejemplo, sibaseUnit
es “By”, 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 a precio por base_unit y para convertir la cantidad de start_usage a 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 recomendada de unidades para mostrar información de precios. Cuando se muestra información de precios, se recomienda mostrar:(unitPrice * displayQuantity) per displayQuantity usageUnit
. Este campo no afecta la fórmula de precios y se usa solo por motivos de visualización. Por ejemplo, siunitPrice
es “$0,0001”,usageUnit
es “GB” ydisplayQuantity
es “1,000”, la forma recomendada de mostrar la información es “$0.10 por 1,000 GB”.[START_AMOUNT]
indica la cantidad que debe consumirse para que el uso comience a cobrarse según la tarifa. Por ejemplo, sistartUsageAmount
es 10, el precio de uso se ajustará al precio definido a continuación después de las primeras 10usage_units
.[CURRENCY_CODE]
es el código de moneda de tres letras, según se define en la norma ISO 4217.[UNITS]
es la unidad de un número entero de esta cantidad. Por ejemplo, si currencyCode es “USD”, cada unidad es 1 dólar estadounidense.[NANOS]
es la cantidad de nanosegundos (10^-9) de la cantidad. Debe ser un valor entre –999,999,999 y +999,999,999, incluido. Si la cantidad de unidades es positiva, los nanosegundos deben ser positivas o cero. Si la cantidad de unidades es cero, los nanosegundos pueden ser positivas, cero o negativas. Si la cantidad de unidades es negativa, los nanosegundos deben ser negativos o cero.
El costo del SKU es de units + nanos
. Por ejemplo, un costo de $1.75 se representa como units=1
y nanos=750,000,000
.
[AGGREGATION_LEVEL]
es el nivel en el que se suma el uso para calcular el costo. Los valores posibles son ACCOUNT, PROJECT y AGGREGATION_LEVEL_UNSPECIFIED.[AGGREGATION_INTERVAL]
es el período en el que se suma el uso a fin de calcular el costo. Los valores posibles son DAILY, MONTHLY y AGGREGATION_INTERVAL_UNSPECIFIED.[AGGREGATION_COUNT]
es la cantidad de períodos en los que se debe sumar. Por ejemplo, siaggregationLevel
es “DAILY” yaggregationCount
es 14, la suma durará más de 14 días.[CONVERSION_RATE]
es el porcentaje de conversiones aplicado a las monedas cuando se convierte de USD a la moneda especificada en la solicitud. Si no se especifica la moneda, se usa una tasa predeterminada de 1.0.[SERVICE_PROVIDER]
identifica al proveedor de servicios. En el caso de los servicios de Google Cloud Platform, el valor es “Google”.[TAXONOMY_TYPE]
es el tipo de taxonomía geográfica para un SKU:GLOBAL
,REGIONAL
oMULTI_REGIONAL
.[REGION]
es la lista de regiones asociadas con un SKU. Este campo está vacío para los SKU globales, ya que están asociados con todas las regiones de Google Cloud.
Los resultados se paginan y se limitan a 5, 000 SKU por página. La respuesta incluye un nextPageToken
que puedes usar para obtener los siguientes 5,000 resultados.
Para recuperar el siguiente lote, establece pageToken=[NEXT_PAGE_TOKEN]
.
Para reducir la cantidad de SKU por página, establece pageSize=[CUSTOM_PAGE_SIZE]
.
Cuando se enumeran todos los elementos, no se muestra ningún token.
Información relacionada
La información de los precios y SKU también está disponible en el informe de la tabla de precios o en la página Exporta datos de la Facturación de Cloud a BigQuery.