Obtenir des informations sur les tarifs de Google Cloud accessibles au public

Cette page explique comment utiliser l'API Cloud Billing Catalog pour :

  • obtenir la liste de tous les services publics, y compris la liste de métadonnées correspondant à chaque service ;
  • obtenir la liste de tous les SKU publics au sein d'un service, y compris ce qui suit :
    • Description lisible du SKU
    • Prix public du SKU
    • Régions où le SKU est disponible à l'achat
    • Informations de classification sur le SKU

Si vous disposez d'une tarification contractuelle personnalisée, vous pouvez utiliser l'API Pricing pour obtenir les tarifs applicables à votre compte de facturation Cloud.

Avant de commencer

Avant de pouvoir utiliser l'API Cloud Billing Catalog, vous devez activer l'API Cloud Billing et obtenir une clé API.

Enable the Cloud Billing API.

Enable the API

Lorsque vous êtes invité à confirmer le projet Google Cloud que vous prévoyez d'utiliser pour l'API Cloud Billing Catalog, nous vous recommandons d'utiliser un projet configuré pour contenir tous vos besoins d'administration FinOps et de facturation pour un compte de facturation Cloud, y compris lorsque l'API Cloud Billing est activée.

Découvrez les avantages d'un projet axé sur FinOps pour vos propres cas d'administration de la facturation.

Obtenir une clé API

Une clé API est nécessaire pour appeler l'API Cloud Billing Catalog. Consultez la page sur l'utilisation des clés API pour en savoir plus à leur sujet.

Répertorier les services publics du catalogue

Au cours de cette étape, vous allez obtenir la liste de tous les services publics, ainsi que les métadonnées pertinentes pour chaque service.

L'extrait de code suivant regroupe tous les services publics du catalogue.

Requête :

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

Réponse :

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

Où :

  • [SERVICE_NAME] est le nom de la ressource pour le service.
  • [SERVICE_ID] est l'identifiant du service.
  • [DISPLAY_NAME] est le nom lisible à afficher pour le service.

Les résultats sont paginés et limités à 5 000 codes SKU par page. La réponse inclut un objet nextPageToken, qui vous permet d'obtenir les 5 000 résultats suivants. Pour récupérer le lot suivant, définissez pageToken=[NEXT_PAGE_TOKEN]. Pour réduire le nombre de SKU par page, définissez pageSize=[CUSTOM_PAGE_SIZE]. Lorsque tous les éléments ont été répertoriés, aucun jeton n'est renvoyé.

Obtenir la liste des SKU pour un service

L'extrait de code suivant répertorie les SKU du catalogue pour le service spécifié :

Requête :

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

Où :

  • SERVICE_ID est l'identifiant du service parent.

Réponse :

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

Où :

  • [SKU_NAME] correspond au nom de la ressource pour le SKU au format services/{SERVICE_ID}/skus/{SKU_ID}.
  • [SKU_ID] est l'identifiant unique du SKU.
  • [SKU_DESCRIPTION] est une description lisible du SKU.
  • [SVC_DISPLAY_NAME] est le nom à afficher pour le service auquel appartient le SKU.
  • [FAMILY] est le type de produit auquel se réfère le SKU. Par exemple, "Compute", "Storage", "Network", etc.
  • [GROUP] est une classification de groupe pour les SKU associés. Par exemple, "RAM, "GPU", "Prediction", etc.
  • [USAGE] représente la façon dont le SKU est consommé. Par exemple, "OnDemand, "Preemptible, "Commit1Mo", "Commit1Yr", etc.
  • [REGION] est la liste des régions de service dans lesquelles le SKU est proposé. Par exemple, "asia-east1".
  • [TIME] est un horodatage au format 2014-10-02T15:01:23.045123456Z, qui représente la date et l'heure à partir desquelles ce tarif est applicable.
  • [SUMMARY] est un résumé lisible des informations tarifaires.
  • [USAGE_UNIT] est la forme abrégée de l'unité d'utilisation dans laquelle la tarification est spécifiée. Lorsque par exemple, usageUnit est défini sur "GiBy", cela signifie que l'utilisation est spécifiée en gibioctets ("Gibibytes").
  • [USAGE_UNIT_DESCRIPTION] est l'unité d'utilisation exprimée dans un format lisible, par exemple, "Gibibyte".
  • [BASE_UNIT] est l'unité de base du code SKU et correspond à l'unité utilisée dans les exportations d'utilisation. Lorsque par exemple, baseUnit est défini sur "By", cela signifie que l'utilisation est spécifiée en "Bytes" (octets).
  • [BASE_UNIT_DESCRIPTION] est l'unité de base sous forme lisible. Par exemple, "byte" (octet).
  • [BASE_CONVERSION_FACTOR] est le facteur de conversion pour la conversion du prix par usage_unit en prix par base_unit, et de la conversion de la valeur start_usage en valeur start_usage dans base_unit. Par exemple, start_usage_amount * base_unit_conversion_factor = start_usage_amount dans base_unit.
  • [DISPLAY_QUANTITY] correspond au nombre recommandé d'unités pour afficher les informations tarifaires. Il est recommandé de respecter le format suivant pour afficher les informations tarifaires : (unitPrice * displayQuantity) per displayQuantity usageUnit. Ce champ n'affecte pas la formule de calcul tarifaire et n'est utilisé qu'à des fins d'affichage. Par exemple, pour un prix unitaire (unitPrice) de "0,0001 USD", une unité d'utilisation (usageUnit) définie sur "GB" et un nombre d'unités (displayQuantity) de "1000", alors la méthode recommandée pour afficher les informations tarifaires est "0,10 USD pour 1 000 Go".
  • [START_AMOUNT] signifie que l'utilisation n'est facturée au tarif indiqué qu'après que cette quantité a été consommée. Par exemple, une quantité d'utilisation de départ (startUsageAmount) de 10 signifie que l'utilisation sera facturée au prix défini ci-dessous après les 10 premières unités d'utilisation (usage_units).
  • [CURRENCY_CODE] est le code de devise à trois lettres défini dans la norme ISO 4217.
  • [UNITS] représente les unités entières du montant. Par exemple, si currencyCode est "USD", alors une unité entière correspond à un dollar américain.
  • [NANOS] est le nombre de nano-unités (10^-9) du montant. La valeur doit être comprise entre -999 999 999 et +999 999 999 inclus. Si les unités sont positives, les nano-unités doivent être positives ou nulles. Si les unités sont nulles, les nano-unités peuvent être positives, nulles ou négatives. Si les unités sont négatives, les nano-unités doivent être négatives ou nulles.

Le coût du code SKU est de units + nanos. Par exemple, un coût de 1,75 $ est représenté par units=1 et nanos=750,000,000.

  • [AGGREGATION_LEVEL] est le niveau auquel l'utilisation est agrégée pour calculer le coût. Les valeurs valides sont ACCOUNT, PROJECT et AGGREGATION_LEVEL_UNSPECIFIED.
  • [AGGREGATION_INTERVAL] est l'intervalle auquel l'utilisation est agrégée pour calculer le coût. Les valeurs valides sont DAILY, MONTHLY et AGGREGATION_INTERVAL_UNSPECIFIED.
  • [AGGREGATION_COUNT] est le nombre d'intervalles à cumuler. Par exemple, si le niveau d'agrégation (aggregationLevel) est défini sur "DAILY" et le nombre d'intervalles à cumuler (aggregationCount) sur 14, l'agrégation sera effectuée sur 14 jours.
  • [CONVERSION_RATE] est le taux de conversion utilisé pour les devises, du dollar américain vers la devise spécifiée dans la requête. Si la devise n'est pas spécifiée, la valeur par défaut est 1,0.
  • [SERVICE_PROVIDER] identifie le fournisseur de services. Correspond à "Google" pour les services propriétaires dans Google Cloud Platform.
  • [TAXONOMY_TYPE] est le type de classification géographique d'un code SKU : GLOBAL, REGIONAL ou MULTI_REGIONAL.
  • [REGION] est la liste des régions associées à un SKU. Ce champ est vide pour les SKU globaux, car ils sont associés à toutes les régions Google Cloud.

Les résultats sont paginés et limités à 5 000 codes SKU par page. La réponse inclut un objet nextPageToken, qui vous permet d'obtenir les 5 000 résultats suivants. Pour récupérer le lot suivant, définissez pageToken=[NEXT_PAGE_TOKEN]. Pour réduire le nombre de SKU par page, définissez pageSize=[CUSTOM_PAGE_SIZE]. Lorsque tous les éléments ont été répertoriés, aucun jeton n'est renvoyé.

Les informations concernant les tarifs et les codes SKU sont également disponibles dans le rapport sur la grille tarifaire ou dans l'exportation des tarifs Cloud Billing vers BigQuery.