Receber informações públicas disponíveis sobre preços do Google Cloud

Nesta página, você verá como usar a API Cloud Billing Catalog para:

  • receber uma lista de todos os serviços públicos, incluindo metadados relevantes sobre cada serviço;
  • receber uma lista de todas as SKUs públicas em um serviço, incluindo:
    • descrição legível da SKU;
    • preços públicos da SKU;
    • regiões onde a SKU está disponível para compra;
    • dados de categorização sobre a SKU.

Se você tiver preços de contratos personalizados, use a API Pricing para conseguir preços aplicáveis à sua conta do Cloud Billing.

Antes de começar

Antes de usar a API Cloud Billing Catalog, você precisa ativar a API Cloud Billing e receber uma chave de API.

Enable the Cloud Billing API.

Enable the API

Quando você precisar confirmar o projeto do Google Cloud que pretende usar para a API Cloud Billing Catalog, recomendamos usar um projeto configurado para conter todas as suas necessidades de FinOps e administração de faturamento de uma conta do Cloud Billing, incluindo onde a API Cloud Billing está ativada.

Saiba mais sobre os benefícios de usar um projeto focado em FinOps para seus casos de uso de administração de faturamento.

consiga uma chave de API

Para chamar a API Cloud Billing Catalog, é necessário ter uma chave de API. Para ver detalhes sobre chaves de API, consulte Como usar chaves de API.

Como listar serviços públicos do catálogo

Nesta etapa, você receberá uma lista de todos os serviços públicos, incluindo metadados relevantes sobre cada serviço.

O snippet de código a seguir lista todos os serviços públicos no catálogo:

Solicitação:

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

Resposta:

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

Em que:

  • [SERVICE_NAME] é o nome do recurso para o serviço;
  • [SERVICE_ID] é o identificador para o serviço;
  • [DISPLAY_NAME] é o nome de exibição legível para o serviço.

Os resultados são paginados e estão limitados a 5.000 SKUs por página. A resposta inclui um nextPageToken que pode ser usado para conseguir os próximos 5.000 resultados. Para buscar o próximo lote, defina pageToken=[NEXT_PAGE_TOKEN]. Para reduzir o número de SKUs por página, defina pageSize=[CUSTOM_PAGE_SIZE]. Quando todos os itens forem listados, nenhum token será retornado.

Como conseguir a lista de SKUs para um serviço

O snippet de código a seguir lista as SKUs no catálogo para o serviço especificado:

Solicitação:

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

Em que:

  • SERVICE_ID é o identificador do serviço pai.

Resposta:

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

Em que:

  • [SKU_NAME] é o nome do recurso da SKU no formato services/{SERVICE_ID}/skus/{SKU_ID};
  • [SKU_ID] é o identificador exclusivo da SKU;
  • [SKU_DESCRIPTION] é uma descrição legível da SKU;
  • [SVC_DISPLAY_NAME] é o nome de exibição do serviço ao qual a SKU pertence;
  • [FAMILY] é o tipo de produto ao qual a SKU se refere. Por exemplo, "Compute", "Storage", "Network" etc.;
  • [GROUP] é uma classificação de grupo para SKUs relacionadas. Por exemplo, "RAM", "GPU", "Prediction" etc.;
  • [USAGE] representa como a SKU é consumida. Por exemplo, "OnDemand", "Preemptible", "Commit1Mo", "Commit1Yr" etc;
  • [REGION] é a lista de regiões de serviço onde a SKU é oferecida. Por exemplo, "asia-east1";
  • [TIME] é um carimbo de data/hora que representa a hora em que este preço entrou em vigor no formato 2014-10-02T15:01:23.045123456Z;
  • [SUMMARY] é um resumo legível das informações de preços;
  • [USAGE_UNIT] é a abreviação da unidade de uso em que o preço é especificado. Por exemplo, a usageUnit "GiBy" indica que o uso é especificado em "Gibibytes";
  • [USAGE_UNIT_DESCRIPTION] é a unidade de uso legível, por exemplo, "gibibyte".
  • [BASE_UNIT] é a unidade base da SKU e a unidade para as exportações de uso. Por exemplo, baseUnit de "By" significa que o uso é especificado em "bytes".
  • [BASE_UNIT_DESCRIPTION] é a unidade base legível. Por exemplo, "byte".
  • [BASE_CONVERSION_FACTOR] é o fator para a conversão de preço por usage_unit para preço por base_unit e conversão do valor start_usage para start_usage_amount em base_unit. Por exemplo, start_usage_amount * base_unit_conversion_factor = start_usage_amount em base_unit.
  • [DISPLAY_QUANTITY] é a quantidade recomendada de unidades para exibir informações de preços. Ao exibir informações de preços, é recomendável exibir: (unitPrice * displayQuantity) per displayQuantity usageUnit. Esse campo não afeta a fórmula de preços e serve apenas para fins de exibição. Por exemplo, se unitPrice for "0,0001 USD", usageUnit for "GB" e displayQuantity for "1000", a maneira recomendada de exibir as informações de preço será "0,10 USD por 1000 GB".
  • O uso de [START_AMOUNT] será cotado de acordo com a taxa somente depois que esse valor for consumido. Por exemplo, startUsageAmount de 10 indica que o preço do uso será fixado no preço definido abaixo após os primeiros 10 usage_units.
  • [CURRENCY_CODE] é o código de moeda de três letras definido conforme a ISO 4217;
  • [UNITS] são as unidades inteiras do valor. Por exemplo, se currencyCode for "USD", uma unidade corresponderá a um dólar norte-americano;
  • [NANOS] é o número de unidades nano (10^-9) do valor. É necessário que o valor fique entre -999.999.999 e +999.999.999. Se "units" for positivo, "nanos" deverá ser positivo ou zero. Se "units" for zero, "nanos" poderá ser positivo, zero ou negativo. Se forem negativas, o valor deverá ser negativo ou zero.

O custo da SKU é units + nanos. Por exemplo, um custo de US$ 1,75 é representado como units=1 e nanos=750,000,000.

  • [AGGREGATION_LEVEL] é o nível no qual o uso é agregado para calcular o custo. Os valores válidos são ACCOUNT, PROJECT e AGGREGATION_LEVEL_UNSPECIFIED;
  • [AGGREGATION_INTERVAL] é o intervalo no qual o uso é agregado para calcular o custo. Os valores válidos são DAILY, MONTHLY e AGGREGATION_INTERVAL_UNSPECIFIED;
  • [AGGREGATION_COUNT] é o número de intervalos de agregação. Por exemplo, se aggregationLevel for "DAILY" e aggregationCount for 14, a agregação durará mais de 14 dias.
  • [CONVERSION_RATE] é a taxa de conversão de moedas: de USD para a moeda especificada na solicitação. Se a moeda não for especificada, o padrão será 1.0;
  • [SERVICE_PROVIDER] identifica o provedor de serviços. No caso, "Google" para serviços próprios do Google Cloud Platform.
  • [TAXONOMY_TYPE] é o tipo de taxonomia geográfica de uma SKU: GLOBAL, REGIONAL ou MULTI_REGIONAL.
  • [REGION] é a lista de regiões associadas a uma SKU. Este campo fica vazio para SKUs globais, porque são associadas a todas as regiões do Google Cloud.

Os resultados são paginados e estão limitados a 5000 SKUs por página. A resposta inclui um nextPageToken que pode ser usado para conseguir os próximos 5.000 resultados. Para buscar o próximo lote, defina pageToken=[NEXT_PAGE_TOKEN]. Para reduzir o número de SKUs por página, defina pageSize=[CUSTOM_PAGE_SIZE]. Quando todos os itens forem listados, nenhum token será retornado.

As informações sobre preços e SKUs também estão disponíveis no relatório da tabela de preços ou na exportação de preços do Cloud Billing para o BigQuery.