Obtenir des informations sur les tarifs de Google Cloud

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

Avant de commencer

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.

API

L'extrait de code suivant répertorie tous les services publics du catalogue :

Requête :

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

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. S'il existe d'autres éléments à répertorier, la réponse inclut un nextPageToken. Définissez la valeur pageToken=[NEXT_PAGE_TOKEN] pour récupérer le lot suivant. Lorsque tous les éléments ont été répertoriés, aucun jeton n'est renvoyé.

Obtenir la liste des SKU pour un service

API

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=API_KEY

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": "[UNIT]",
                  "usageUnitDescription": "[UNIT_DESCRIPTION]",
                  "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]",
    }
  ],
  "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.
  • [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").
  • [UNIT_DESCRIPTION] est l'unité d'utilisation exprimée dans un format lisible, par exemple, "Gibibyte".
  • [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. Par exemple, -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.

Les résultats sont paginés. S'il existe d'autres éléments à répertorier, la réponse inclut un nextPageToken. Définissez la valeur pageToken=[NEXT_PAGE_TOKEN] pour récupérer le lot suivant. Lorsque tous les éléments ont été répertoriés, aucun jeton n'est renvoyé.