Obtenha informações de preços da Google Cloud disponíveis publicamente

Esta página mostra como usar a API Cloud Billing Catalog para:

  • Obtenha uma lista de todos os serviços públicos, incluindo metadados relevantes sobre cada serviço.
  • Obtenha uma lista de todas as SKUs públicas num serviço, incluindo:
    • Descrição legível do SKU.
    • Preço público do SKU.
    • Regiões onde a SKU está disponível para compra.
    • Dados de categorização sobre o SKU.

Se tiver preços contratuais personalizados, pode usar a API Pricing para obter preços aplicáveis à sua conta de faturação do Google Cloud.

Antes de começar

Antes de poder usar a API Cloud Billing Catalog, tem de ativar a API Cloud Billing e obter uma chave da 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

Quando lhe for pedido que confirme o Google Cloud projeto que pretende usar para a API Cloud Billing Catalog, recomendamos que use um projeto configurado para satisfazer todas as suas necessidades de administração de faturação e FinOps para uma conta de faturação do Google Cloud, incluindo onde a API Cloud Billing está ativada.

Saiba mais sobre as vantagens de usar um projeto focado em FinOps para os seus exemplos de utilização de administração de faturação.

Obtenha uma chave da API

A chamada da API Cloud Billing Catalog requer uma chave da API. Pode encontrar detalhes sobre as chaves da API em Usar chaves da API.

Indicar serviços públicos do catálogo

Neste passo, recebe uma lista de todos os serviços públicos, incluindo metadados relevantes sobre cada serviço.

O seguinte fragmento de código lista todos os serviços públicos no catálogo.

Pedido:

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

Onde:

  • [SERVICE_NAME] é o nome do recurso do serviço.
  • [SERVICE_ID] é o identificador do serviço.
  • [DISPLAY_NAME] é o nome a apresentar legível do serviço.

Os resultados são paginados e estão limitados a 5000 SKUs por página. A resposta inclui um nextPageToken que pode usar para obter os 5000 resultados seguintes. Para obter o lote seguinte, defina pageToken=[NEXT_PAGE_TOKEN]. Para reduzir o número de SKUs por página, defina pageSize=[CUSTOM_PAGE_SIZE]. Quando todos os itens foram listados, não é devolvido nenhum token.

Obter a lista de SKUs de um serviço

O seguinte fragmento do código apresenta os SKUs no catálogo para o serviço especificado:

Pedido:

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

Onde:

  • SERVICE_ID é o identificador do serviço principal.

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

Onde:

  • [SKU_NAME] é o nome do recurso do SKU no formato services/{SERVICE_ID}/skus/{SKU_ID}.
  • [SKU_ID] é o identificador exclusivo do SKU.
  • [SKU_DESCRIPTION] é uma descrição legível do SKU.
  • [SVC_DISPLAY_NAME] é o nome a apresentar do serviço ao qual o SKU pertence.
  • [FAMILY] é o tipo de produto a que o SKU se refere. Por exemplo, "Computação", "Armazenamento", "Rede", etc.
  • [GROUP] é uma classificação de grupo para SKUs relacionados. Por exemplo, "RAM", "GPU", "Prediction", etc.
  • [USAGE] representa a forma como o SKU é consumido. Por exemplo, "OnDemand", "Preemptible", "Commit1Mo", "Commit1Yr", etc.
  • [REGION] é a lista de regiões de serviço nas quais o SKU é oferecido. Por exemplo, "asia-east1".
  • [TIME] é uma data/hora que representa o momento a partir do qual este preço foi eficaz no formato 2014-10-02T15:01:23.045123456Z.
  • [SUMMARY] é um resumo legível das informações de preços,
  • [USAGE_UNIT] é a abreviatura da unidade de utilização na qual os preços são especificados. Por exemplo, usageUnit de "GiBy" significa que a utilização é especificada em "Gibibytes".
  • [USAGE_UNIT_DESCRIPTION] é a unidade de utilização num formato legível por humanos, por exemplo, "gibibyte".
  • [BASE_UNIT] é a unidade base do SKU e é a unidade usada nas exportações de utilização. Por exemplo, baseUnit de "By" significa que a utilização é especificada em "Bytes".
  • [BASE_UNIT_DESCRIPTION] é a unidade base num formato legível. Por exemplo, "byte".
  • [BASE_CONVERSION_FACTOR] é o fator de conversão para converter o preço por unidade_de_utilização no preço por unidade_base e converter o valor de utilização inicial no valor de utilização inicial na unidade_base. Por exemplo, start_usage_amount * base_unit_conversion_factor = start_usage_amount in base_unit.
  • [DISPLAY_QUANTITY] é a quantidade recomendada de unidades para apresentar informações de preços. Quando apresentar informações de preços, recomenda-se que apresente: (unitPrice * displayQuantity) per displayQuantity usageUnit. Este campo não afeta a fórmula de preços e destina-se apenas a fins de apresentação. Por exemplo, se o unitPrice for "0,0001 USD", o usageUnit for "GB" e o displayQuantity for "1000", a forma recomendada de apresentar as informações de preços é "0,10 USD por 1000 GB".
  • [START_AMOUNT] A utilização é cobrada à taxa apenas após o consumo deste valor. Por exemplo, um startUsageAmount de 10 indica que a utilização vai ser cobrada ao preço definido abaixo após os primeiros 10 usage_units.
  • [CURRENCY_CODE] é o código de moeda de três letras definido na norma ISO 4217.
  • [UNITS] é o número inteiro do valor. Por exemplo, se currencyCode for "USD", 1 unidade é um dólar americano.
  • [NANOS] é o número de unidades nano (10^-9) do valor. O valor tem de estar compreendido entre -999 999 999 e +999 999 999, inclusive. Se units for positivo, nanos tem de ser positivo ou zero. Se as unidades forem zero, os nanos podem ser positivos, zero ou negativos. Se units for negativo, nanos tem de ser negativo ou zero.

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

  • [AGGREGATION_LEVEL] é o nível ao qual a utilização é agregada para calcular o custo. Os valores válidos são ACCOUNT, PROJECT e AGGREGATION_LEVEL_UNSPECIFIED.
  • [AGGREGATION_INTERVAL] é o intervalo no qual a utilização é agregada para calcular o custo. Os valores válidos são DAILY, MONTHLY e AGGREGATION_INTERVAL_UNSPECIFIED.
  • [AGGREGATION_COUNT] é o número de intervalos para agregar. Por exemplo, se aggregationLevel for "DIÁRIO" e aggregationCount for 14, a agregação vai ser feita durante 14 dias.
  • [CONVERSION_RATE] é a taxa de conversão para a conversão de moeda, de USD para a moeda especificada no pedido. Se a moeda não for especificada, o valor predefinido é 1,0.
  • [SERVICE_PROVIDER] identifica o fornecedor de serviços. Este é o "Google" para os serviços originais na Google Cloud Platform.
  • [TAXONOMY_TYPE] é o tipo de taxonomia geográfica de um SKU: GLOBAL, REGIONAL ou MULTI_REGIONAL.
  • [REGION] é a lista de regiões associadas a um SKU. Este campo está vazio para SKUs globais, uma vez que estão associados a todas as Google Cloudregiões.

Os resultados são paginados e estão limitados a 5000 SKUs por página. A resposta inclui um nextPageToken que pode usar para obter os 5000 resultados seguintes. Para obter o lote seguinte, defina pageToken=[NEXT_PAGE_TOKEN]. Para reduzir o número de SKUs por página, defina pageSize=[CUSTOM_PAGE_SIZE]. Quando todos os itens foram listados, não é devolvido nenhum token.

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