Intégrer le backend de votre application

Cette section décrit les étapes à suivre pour intégrer le backend de votre application Cloud Marketplace. Grâce à cette intégration, vous pouvez gérer comptes et les droits d'accès, qui indiquent que les utilisateurs ont acheté votre produit auprès de Cloud Marketplace. Si vous avez choisi un modèle de tarification basé sur l'utilisation, l'intégration du backend permet également de signaler l'utilisation à Google.

Pour un exemple d'intégration d'une application de base avec Cloud Marketplace et une procédure pas à pas de l'exemple de code, consultez l'atelier de programmation pour intégrer un service géré.

Pour obtenir l'exemple de code utilisé dans l'atelier de programmation, consultez le dépôt GitHub.

Avant de commencer

  • Configurez l'accès à l'API Partner Procurement de Cloud Commerce comme décrit à la page Intégrer votre application : configuration.
  • Si vous avez choisi un modèle de tarification basé sur l'utilisation, vérifiez si votre ingénieur partenaire a créé un service sur lequel vous pouvez rendre compte de l'utilisation. Ce service s'affiche dans le champ Domaine de service de la section Intégration de la facturation de Producer Portal.

Créer un compte de service

Pour intégrer votre produit à Google Cloud, vous devez créer un compte de service dans le projet que vous utilisez pour votre produit. Votre appli utilise cette de service pour interagir avec les API Cloud Marketplace Partner et obtenir des informations sur l'expérience utilisateur des achats.

Utilisez Producer Portal pour créer et associer vos comptes de service. Pour connaître la procédure détaillée de création d'un compte de service, consultez Créer et gérer des comptes de service

Utiliser Producer Portal pour intégrer le backend de votre application

Pour accéder à toutes les informations dont vous avez besoin pour intégrer le backend de votre application Cloud Marketplace à partir d'un emplacement unique, comme vos comptes de service et votre forfait vous pouvez utiliser la section Intégration de la facturation de Producer Portail.

Le lien direct vers Producer Portal est le suivant :

https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID

Pour accéder à la section Intégration de la facturation:

  1. Dans la liste des produits, cliquez sur le nom de votre produit.

  2. Sur la page Présentation de votre produit, accédez à Intégration technique. puis cliquez sur Intégration de la facturation.

Créer et associer des comptes de service dans Producer Portal

Vous pouvez utiliser la section Intégration de la facturation de Producer Portal pour créer et associer les comptes de service que vous utilisez pour interagir avec les API Partner, obtenir des informations sur l'expérience utilisateur des achats.

Le lien direct vers Producer Portal est le suivant :

https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID

Dans les étapes suivantes, vous pouvez utiliser des comptes de service existants ou en créer de nouveaux. Si vous créez un compte de service, spécifiez le nom du compte de service dans le champ Nom du compte de service, et le nom dans le champ ID de compte de service, puis cliquez sur Créer et associer.

Pour associer vos comptes de service, procédez comme suit :

  1. Dans la liste des produits, cliquez sur le nom de votre produit.

  2. Sur la page Présentation de votre produit, accédez à Intégration technique. puis cliquez sur Intégration de la facturation.

  3. Pour intégrer l'API Partner Procurement, sous Associer un service pour appeler l'API Procurement, cliquez sur Ajouter un compte de service. Vous pouvez saisir un compte de service existant dans le champ ou créer un nouveau compte de service.

  4. Pour procéder à l'intégration à Pub/Sub, sous Associer un compte de service à vous abonner au sujet Pub/Sub, cliquez sur Ajouter un compte de service. Vous pouvez saisir un compte de service existant dans le champ ou créer un nouveau compte de service.

  5. Pour intégrer l'API Service Control, sous Ajouter roles/servicemanagement.serviceController à un compte de service, cliquez sur Ajouter un compte de service. Vous pouvez saisir un compte de service existant dans le champ ou créer un nouveau compte de service.

Tâches de compte utilisateur

En règle générale, votre application doit gérer le scénario suivant :

  1. Un utilisateur effectue une requête ou une modification dans Cloud Marketplace (par exemple, une signature pour votre produit.

  2. Cloud Marketplace envoie une notification à votre application via Pub/Sub, qui contient des informations sur la requête eventType. Par exemple, si un utilisateur change son droit, le champ eventType est défini sur ENTITLEMENT_PLAN_CHANGED.

    Consultez la liste complète des eventTypes possibles.

  3. Pour approuver la requête, votre application envoie une requête HTTP POST à l'API Partner Procurement.

Les sections suivantes décrivent les types de requêtes que les utilisateurs peuvent effectuer et ce que votre application doit faire pour gérer ces requêtes.

Pour les appels d'API décrits dans cette section, utilisez ce point de terminaison :

https://cloudcommerceprocurement.googleapis.com/

Créer un compte pour un nouvel utilisateur

Lorsqu'un utilisateur achète votre produit pour la première fois, Cloud Marketplace crée un ressource de compte qui suit la relation de l'utilisateur avec vous. Lorsque la ressource de compte est créée, vous recevez une notification via le sujet Pub/Sub qui a été créé pour vous. Le message Pub/Sub est au format suivant :

{
  "eventId": "...",
  "providerId": "YOUR_PARTNER_ID",
  "account": {
    "id": "USER_ACCOUNT_ID",
    "updateTime": "..."
  }
}

USER_ACCOUNT_ID est l'ID de compte créé par Cloud Marketplace et YOUR_PARTNER_ID est un ID qui vous est attribué lorsque votre partenaire Engineer permet d'accéder à l'API Partner Procurement.

Simultanément, l'utilisateur est dirigé vers votre page d'inscription, où il crée un compte dans votre système. Pour en savoir plus sur la création de la page d'inscription, consultez la page Intégrer l'interface de votre application.

Approuver le compte d'un utilisateur

Une fois l'utilisateur inscrit, votre application doit appeler l'API Partner Procurement et indiquer que le compte a été approuvé. Les comptes sont créés dans l'état ACCOUNT_ACTIVE, mais une entrée PENDING est présente dans le champ approvals nommé signup, ce qui indique que l'utilisateur ne s'est pas encore inscrit. Pour approuver le compte après l'inscription de l'utilisateur, utilisez la requête HTTP POST suivante :

POST v1/providers/YOUR_PARTNER_ID/accounts/USER_ACCOUNT_ID:approve {'approvalName': 'signup'}

Vérifier l'état du compte d'un utilisateur

Pour vérifier l'état d'un compte associé, utilisez la demande HTTP GET suivante :

GET v1/providers/YOUR_PARTNER_ID/accounts/USER_ACCOUNT_ID

La réponse est au format suivant :

{
  "name": "providers/YOUR_PARTNER_ID/accounts/USER_ACCOUNT_ID",
  "provider": "acme-services",
  "state": "ACCOUNT_ACTIVE",
  "approvals": [{
    "name": "signup",
    "state": "APPROVED",
    "updateTime": "...",
  }],
  "updateTime": "...",
  "createTime": "..."
}

Pour obtenir la liste des états de compte possibles, consultez la référence API providers.accounts.

Gérer les droits d'accès

Lorsque les clients choisissent un forfait pour votre logiciel, Google crée un droit, qui indique que le client a acheté votre produit sur Cloud Marketplace. Cette section explique comment créer et gérer les droits de vos clients à l'aide de l'API Partner Procurement.

Pour en savoir plus sur la gestion des droits d'accès, consultez le documentation de référence.

Si vous avez activé plusieurs commandes pour le même produit, l'API Partner Procurement peut envoyer plusieurs événements avec le type d'événement ENTITLEMENT_ACTIVE pour le même ACCOUNT_ID, chacun avec un ENTITLEMENT_ID unique pour différentes offres. Dans ce cas, assurez-vous de modifier la logique de gestion des événements de votre application afin qu'elle réponde à ENTITLEMENT_ID au lieu de ACCOUNT_ID ou PRODUCT_ID.

Vous devez également apporter des modifications à votre intégration côté client pour gérer le nouvel objet orders envoyé dans la charge utile JWT. Pour en savoir plus, consultez la section Intégrer l'interface de votre application.

Pour plus d'informations sur l'activation de la fonctionnalité pour plusieurs commandes d'un même produit, consultez l'article Activer plusieurs commandes du même produit.

Approuver ou refuser un droit d'accès

Lorsqu'un client choisit un forfait, Cloud Marketplace crée un et envoie le message Pub/Sub suivant à votre application:

{
  "eventId": "...",
  "eventType": "ENTITLEMENT_CREATION_REQUESTED",
  "providerId": "YOUR_PARTNER_ID",
  "entitlement": {
    "id": "ENTITLEMENT_ID",
    "updateTime": "...",
    "newOfferDuration": "P2Y3M",   // Contract duration for offer-based entitlements
  },
}

ENTITLEMENT_ID est un ID créé par Cloud Marketplace. Si l'offre a une durée spécifiée, cette durée est indiquée en années et mois. Si une date de fin est spécifiée pour l'offre au lieu d'une durée, le champ indiquant la durée est vide.

Dans votre système, mettez à jour le compte de l'utilisateur pour indiquer qu'il a souscrit un forfait. Pour approuver le droit, envoyez une requête HTTP POST à l'API Partner Procurement et envoyez l'ID ENTITLEMENT_ID que vous approuvez :

POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:approve

Pour refuser un droit, utilisez plutôt la méthode reject dans votre requête HTTP POST :

POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:reject

Pour indiquer le motif du refus du droit d'accès dans le corps de la requête, utilisez la méthode le format suivant:

{
  "reason": "..."
}

Modifier un forfait

En fonction de la configuration de vos forfaits, vos clients pourront peut-être modifier le leur. Si un client sélectionne un nouveau forfait, vous recevez un message Pub/Sub, au format suivant :

{
  "eventId": "...",
  "eventType": "ENTITLEMENT_PLAN_CHANGE_REQUESTED",
  "providerId": "YOUR_PARTNER_ID",
  "entitlement": {
    "id": "ENTITLEMENT_ID",
    "newPlan": "ultimate",   // New plan
    "updateTime": "...",
    "newOfferDuration": "P2Y3M",   // Contract duration for the new offer, for offer-based entitlements
  },
}

Si l'offre a une durée spécifiée, cette durée est indiquée en années et mois. Si l'offre a une date de fin spécifiée, et non une durée, le champ indiquant que la durée est vide.

Pour approuver la modification du forfait, adressez la requête HTTP POST suivante à l'API Partner Procurement :

POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:approvePlanChange

L'organisme demandeur doit avoir le plan en cours d'approbation :

{
  "pendingPlanName": PLAN_NAME
}

Une fois la modification approuvée, vous recevez un autre message Pub/Sub lorsque la modification prend effet. Dans le message, le champ eventType devient ENTITLEMENT_PLAN_CHANGED. Pour vérifier l'état d'un plan, envoyez la requête HTTP GET suivante à l'API Partner Procurement.

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

La réponse est semblable à la suivante, le champ state indiquant si le nouveau forfait est actif ou si la modification du forfait est toujours en attente :

{
  "name": "providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID",
  "provider": "YOUR_PARTNER_ID",
  "account": "USER_ACCOUNT_ID",
  "product": "example-server",
  "plan": "pro",
  "state": "ENTITLEMENT_PENDING_PLAN_CHANGE",
  "newPendingPlan": "ultimate",
  ...
}

Annuler un droit d'accès

Si un utilisateur décide d'annuler son droit d'accès, vous recevez une notification Pub/Sub. Tout comme la modification d'un forfait, l'annulation peut prendre effet à la fin du cycle de facturation en cours.

La notification est au format suivant :

{
  "eventId": "...",
  // If the entitlement is canceled at the end of the month,
  // eventType is ENTITLEMENT_PENDING_CANCELLATION
  "eventType": "ENTITLEMENT_CANCELLED",
  "providerId": "YOUR_PARTNER_ID",
  "entitlement": {
    "id": "ENTITLEMENT_ID",
    "updateTime": "..."
  },
}

Supprimer un droit

Si un utilisateur envoie une demande directe à l'assistance Google, ou s'il quitte la plate-forme Google, son les droits d'accès sont immédiatement annulés, et leurs droits d'accès ainsi que les comptes associés sont supprimés après un délai de grâce de 60 jours. Pour protéger la vie privée de l'utilisateur, vous devez supprimer ses données de vos serveurs dès que vous en êtes informé.

Une fois les droits d'accès et le compte supprimés, vous recevez des notifications semblables à celles-ci :

{
  "eventId": "...",
  "eventType": "ENTITLEMENT_DELETED",
  "providerId": "YOUR_PARTNER_ID",
  "entitlement": {
    "id": "ENTITLEMENT_ID",
    "updateTime": "...",
  },
}
{
  "eventId": "...",
  "eventType": "ACCOUNT_DELETED",
  "providerId": "YOUR_PARTNER_ID",
  "account": {
    "id": "USER_ACCOUNT_ID",
    "updateTime": "...",
  },
}

Liste des types d'événements pour les tâches de compte

Voici une liste des eventType que votre application peut recevoir dans les messages Pub/Sub :

eventTypeDescription
ACCOUNT_CREATION_REQUESTEDObsolète
ACCOUNT_ACTIVEIndique que le compte du client a été créé.
ACCOUNT_DELETEDIndique que le compte du client a été supprimé des systèmes Google Cloud.
ENTITLEMENT_CREATION_REQUESTEDIndique qu'un client a sélectionné l'un de vos forfaits.
ENTITLEMENT_OFFER_ACCEPTEDIndique qu'une offre a été acceptée par un client. Inclut l'heure de début prévue de l'offre, le cas échéant. Cet événement est envoyé à la fois pour les offres privées et les offres standards (achats publics).
ENTITLEMENT_ACTIVEIndique que le forfait choisi par un client est maintenant actif.
ENTITLEMENT_PLAN_CHANGE_REQUESTEDIndique qu'un client a choisi un nouveau forfait.
ENTITLEMENT_PLAN_CHANGEDIndique que la modification du forfait d'un client est approuvée et que les modifications sont entrées en vigueur.
ENTITLEMENT_PLAN_CHANGE_CANCELLEDIndique que le changement de forfait d'un client a été annulé, soit parce qu'il n'a pas été approuvé, soit parce le client est revenu à son ancien forfait.
ENTITLEMENT_PENDING_CANCELLATIONIndique qu'un client a annulé son forfait et que l'annulation est en attente jusqu'à la fin du cycle de facturation.
ENTITLEMENT_CANCELLATION_REVERTEDIndique que l'annulation en attente d'un client a été annulée. Notez que les annulations ne peuvent pas être annulées une fois qu'elles sont définitives.
ENTITLEMENT_CANCELLEDIndique que le forfait d'un client a été annulé.
ENTITLEMENT_CANCELLINGIndique que le forfait d'un client est en cours d'annulation.
ENTITLEMENT_RENEWEDIndique que le droit d'accès d'un client a été renouvelé pour une autre période. Aucune action de votre part n'est requise de votre part..
ENTITLEMENT_OFFER_ENDEDIndique que l'offre privée d'un client est arrivée à expiration. Si le droit d'accès du client a été annulé, un événement ENTITLEMENT_CANCELLED distinct est déclenché. Si le droit d'accès du client est toujours actif, son forfait inclut un prix sans remise.
ENTITLEMENT_DELETEDIndique que des informations sur le forfait d'un client ont été supprimées de Cloud Marketplace.

Signaler l'utilisation à Google (pour la tarification basée sur l'utilisation)

Si vous choisissez une tarification basée sur l'utilisation pour votre produit, vous devez signaler l'utilisation de votre application à l'API Service Control.

Pour obtenir une présentation de Service Control, consultez le Guide de démarrage.

Nous vous recommandons d'utiliser Producer Portal pour y créer un compte de service que vous utiliserez avec Service Control.

Lorsqu'un droit est créé, vous devez appeler l'API Partner Procurement pour récupérer un usageReportingId, à l'aide de la demande HTTP GET suivante :

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

La réponse qui contient des informations sur le droit est au format suivant :

{
  "name": "providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID",
  "provider": "YOUR_PARTNER_ID",
  "account": "USER_ACCOUNT_ID",
  "product": "example-messaging-service",
  "plan": "pro",
  "usageReportingId": "USAGE_REPORTING_ID",
  "state": "ENTITLEMENT_ACTIVATION_REQUESTED",
  "updateTime": "...",
  "createTime": "..."
}

Pour signaler l'utilisation, vous devez d'abord effectuer un appel d'API services.check afin de vérifier la configuration du service. Dans la réponse, si l'objet checkErrors[] est vide, effectuez un appel d'API services.report pour envoyer le rapport d'utilisation.

Le rapport d'utilisation est une API Service Control Operation. Voici un exemple de rapport d'utilisation pour example-messaging-service qui envoie des informations sur le stockage utilisé par le client :

POST https://servicecontrol.googleapis.com/v1/services/example-messaging-service.gcpmarketplace.example.com:report
{
  "operations": [{
    "operationId": "1234-example-operation-id-4567",
    "operationName": "Hourly Usage Report",
    "consumerId": "USAGE_REPORTING_ID",
    "startTime": "2019-02-06T12:00:00Z",
    "endTime": "2019-02-06T13:00:00Z",
    "metricValueSets": [{
      "metricName": "example-messaging-service/UsageInGiB",
      "metricValues": [{ "int64Value": "150" }]
    }],
    "userLabels": {
      "cloudmarketplace.googleapis.com/resource_name": "order_history_cache",
      "cloudmarketplace.googleapis.com/container_name": "storefront_prod",
      "environment": "prod",
      "region": "us-west2"
    }
  }]
}

où :

  • operationId est une chaîne unique générée par votre instance de service. Vous devez utiliser le même identifiant operationId pour vos opérations check et report.

  • consumerId est identique au champ usageReportingId du droit d'accès.

  • startTime et endTime représentent les heures de début et de fin de l'intervalle total pour l'opération report. Dans la plupart des cas, l'élément startTime d'une opération report doit avoir la même valeur que le champ endTime de l'opération report précédente.

    Si le service d'un client est désactivé avant le startTime d'une opération report, l'appel d'API services.check envoie une erreur dans l'objet checkErrors[] et le client n'est pas facturé pour l'intervalle correspondant.

  • MetricValueSet contient un ou plusieurs intervalles de temps et les valeurs de métriques mises à jour correspondantes. Vous définissez les métriques de votre service lorsque vous choisissez et envoyez votre modèle de tarification.

    Vous affichez et référencez les identifiants de vos métriques dans Section Intégration technique de Producer Portal

  • userLabels sont des libellés créés par l'utilisateur, définis comme des chaînes clé-valeur qui respectent des exigences de syntaxe spécifiques. Ces libellés sont transférés aux outils de gestion des coûts de Cloud Billing pour l'attribution. Pour connaître les conventions d'étiquetage recommandées, consultez la section Bonnes pratiques pour l'étiquetage de l'utilisation.

Si l'API services.check renvoie une ou plusieurs des erreurs suivantes, nous vous recommandons de cesser de fournir votre service au client jusqu'à ce que l'erreur soit résolue :

  • SERVICE_NOT_ACTIVATED
  • BILLING_DISABLED
  • PROJECT_DELETED

Bonnes pratiques pour les rapports d'utilisation

Lorsque vous créez un rapport d'utilisation, par exemple concernant les opérations ou l'utilisation des ressources, tenez compte des informations suivantes pour vous assurer que vos clients sont facturés correctement.

Signaler l'utilisation au moment de l'occurrence

Les retards dans la création des rapports d'utilisation nuisent à l'expérience de gestion des coûts de vos clients et peuvent ne pas être reflétés dans les rapports des partenaires. Les fournisseurs de services doivent signaler l'utilisation dans un délai d'une heure après l'utilisation générée.

Si vous avez besoin de plus de temps pour signaler l'utilisation, contactez votre ingénieur partenaire.

Signaler l'utilisation après une annulation de droit d'accès

Si vous avez annulé l'utilisation après signalement d'un droit, vous pouvez toujours le signaler avec un horodatage qui reflète l'heure à laquelle l'utilisation a été générée. L'horodatage doit être antérieur à l'annulation du droit. Signalez cette utilisation dans un délai d'une heure. Vous ne devez pas signaler d'utilisation en tant que nouvelle utilisation après la fin du droit.

Signaler l'utilisation à la fin du mois

La période de référence d'une heure s'applique à la date limite de fin de mois. Pour vous assurer que l'utilisation est indiquée sur la facture du mois en cours, indiquez l'utilisation au plus tard à 1:00, heure du Pacifique des États-Unis et du Canada (UTC-7 ou UTC-8), le lendemain.

Par exemple, pour une facture de septembre, indiquez l'utilisation avant le 1er octobre, 1:00, heure du Pacifique des États-Unis et du Canada (UTC-7 ou UTC-8).

Si l'utilisation est signalée plus tard dans la journée, elle risque de ne pas être incluse dans la facture du mois en cours.

Correction des actions client qui empêchent de signaler l'utilisation au moment de l'occurrence

Si vous ne pouvez pas signaler l'utilisation, ou si le service ou la facturation est désactivé pendant une période prolongée, nous vous recommandons d'accorder au client un délai de grâce pour restaurer le service. Nous vous recommandons de ne pas dépasser 30 jours. Au cours de ce délai de grâce, envisagez d'effectuer les opérations suivantes :

  • Dégrader le service fourni. Par exemple, passez le client à une version gratuite ou commencez à rejeter les appels.

  • Continuez à collecter le journal d'utilisation lorsque le service est désactivé. Nous vous recommandons de collecter l'utilisation avec la répartition des frais au plus tard par une fenêtre d'une heure, afin de pouvoir la relire après l'activation du service.

Lorsque le service est activé, vous devez signaler l'utilisation collectée lors de la désactivation du service en tant qu'utilisation réelle avec l'heure à laquelle les données ont été collectées. Vous devez également reprendre vos rapports d'utilisation habituels.

Pour les applications Kubernetes, si les rapports d'utilisation échouent au démarrage de l'application, nous recommandons que votre application s'arrête d'elle-même, afin que vos clients obtiennent des commentaires immédiats et puissent résoudre le problème.

Bonnes pratiques pour l'étiquetage de l'utilisation

Pour les produits SaaS basés sur l'utilisation, l'utilisation est attribuée à un seul projet spécifié par le champ usageReportingId. Dans certains cas, un produit SaaS peut être partagé à grande échelle au sein de l'organisation d'un client et utilisées dans de nombreux projets clients. À activer la prise en charge de l'attribution des coûts plus spécifique, nous vous recommandons d'utiliser des Les produits SaaS incluent le champ facultatif userLabels dans leur rapport d'utilisation opération.

Si votre service est nativement compatible avec un concept d'étiquettes de ressource, nous vous recommandons de transférer ces étiquettes dans vos rapports d'utilisation. Les étiquettes doivent respecter les exigences de syntaxe.

Cloud Marketplace réserve les libellés suivants. Vous pouvez utiliser ces étiquettes pour identifier du contexte supplémentaire à utiliser sur votre plate-forme de services native. Mer nous vous recommandons d'inclure ces libellés par défaut dans vos rapports d'utilisation.

Clé du libelléValeur du libelléDescription >
cloudmarketplace.googleapis.com/resource_name USER_SUPPLIED Nom de la ressource associée à une métrique d'utilisation.
cloudmarketplace.googleapis.com/container_name USER_SUPPLIED Nom d'un conteneur de ressources.

Les libellés sont transférés vers les outils de gestion des coûts de Cloud Billing, y compris les rapports de coût et les exportations de la facturation.

Exemple d'étiquetage d'utilisation

Pour cet exemple, imaginez que votre organisation propose un produit de stockage appelé Solutions de stockage SaaS.

Un client, Carl, a acheté votre offre de stockage pour ses Le projet Google Cloud e-commerce-website, pour héberger le user_profiles_db et products_db pour leur site Web d'e-commerce:

  • user_profiles_db contient des informations sur les utilisateurs qui visitent le site de Carl.
  • products_db contient des informations sur les produits que Carl vend sur son sur votre site.

Si vous souhaitez fournir à Carl une répartition détaillée des coûts liés à son utilisation, vous pouvez utilisez la paire clé-valeur userLabels pour indiquer le coût d'utilisation de chaque séparément.

Par exemple, pour indiquer le coût attribué à l'utilisation de l'espace de stockage products_db de Carl, vous pouvez envoyer le rapport suivant, qui indique que l'espace de stockage products_db de Carl lui coûte 100 unités :

operation = {
  'operationId': '<UUID>',
  'operationName': 'db-total-storage',
  'consumerId': 'project:carl_website',
  'startTime': '<Timestamp>',
  'endTime': '<Timestamp>',
  'metricValues': [{
      'int64Value': 100,
  }],
  'userLabels': {
    'cloudmarketplace.googleapis.com/container_name': 'e-commerce-website',
    'cloudmarketplace.googleapis.com/resource_name': 'products_db'
  }
}

service.services().report(
  serviceName=service_name, body={
    'operations': [operation]
}).execute()

Dans cet exemple, service_name correspond à l'ID du projet Google Cloud de Carl projet.

Pour obtenir un exemple plus détaillé d'utilisation de userLabels, vous pouvez consulter Atelier de programmation SaaS.

(Facultatif) Intégrer vos rapports au cloud privé virtuel (VPC)

Si vous souhaitez utiliser un cloud privé virtuel (VPC) dans l'environnement exécuté par le service de votre produit, vous devez effectuer les étapes suivantes pour intégrer les rapports Google Cloud Marketplace au VPC. Par défaut, les VM Compute Engine de votre VPC ne peuvent communiquer qu'en interne. Vous devez configurer l'une des VM pour qu'elle communique en externe afin que les autres VM de votre VPC puissent l'utiliser pour créer des rapports.

Avant de commencer

Configurer l'accès privé à Google

Pour permettre aux machines virtuelles (VM) Compute Engine de votre produit de communiquer en externe à des fins de création de rapports, vous devez configurer Accès privé à Google. Pour en savoir plus sur la configuration de l'accès privé à Google, consultez la section Configurer l'accès privé à Google.

  1. Activer l'accès privé à Google pour votre environnement de service.

  2. Configurez le DNS pour de résoudre les requêtes à private.googleapis.com.

  3. Créez une route personnalisée pour les API Google:

    • Dans le champ Nom, spécifiez route-google-apis-services.

    • Dans Réseau, sélectionnez votre VPC.

    • Pour Plage d'adresses IP de destination, spécifiez 199.36.153.8/30.

    • Pour Priorité, spécifiez 0.

    • Dans le champ Tags d'instance, spécifiez google-apis-services.

    • Pour Saut suivant, sélectionnez Passerelle Internet par défaut.

  4. Créez une règle de pare-feu VPC pour permettre à votre produit de communiquer avec les API Google :

    • Dans le champ Nom, spécifiez google-apis-services.

    • Pour le champ Description, spécifiez Allow egress traffic to Google APIs and services.

    • Activez la journalisation des règles de pare-feu.

    • Dans le champ Réseau, sélectionnez votre VPC.

    • Pour le champ Sens du trafic, sélectionnez Sortie.

    • Pour l'option Action en cas de correspondance, sélectionnez Autoriser.

    • Dans le champ Nom, spécifiez google-apis-services.

    • Dans le champ Cibles, sélectionnez Specified target tags, puis dans Target (Cible) : , spécifiez google-apis-services.

    • Pour Filtre de destination, sélectionnez IPv4 ranges, et pour les Plages IPv4 de destination, spécifiez 199.36.153.8/30.

    • Dans Protocoles et ports, sélectionnez Allow all.

  5. Dans la console Google Cloud, sélectionnez la VM que vous souhaitez utiliser pour enregistrer l'utilisation de votre produit. Sous Tags réseau, ajoutez google-apis-services, puis cliquez sur ENREGISTRER.

  6. Sous Interfaces réseau, localisez le réseau de votre VPC de commande.

  7. Dans la colonne Sous-réseau, cliquez sur le lien de sous-réseau. À partir du sous-réseau d'informations, cliquez sur MODIFIER, puis définissez l'option Accès privé à Google sur Activé :

  8. Cliquez sur ENREGISTRER.

(Facultatif) Intégrer vos rapports avec VPC Service Controls

Si vous souhaitez utiliser VPC Service Controls dans le environnement dans lequel le service s'exécute, vous devez effectuer la Pour intégrer la création de rapports Google Cloud Marketplace à VPC Service Controls, procédez comme suit:

  1. Configurer l'implémentation VPC Service Controls de votre choix dans votre service environnement. Pour en savoir plus sur la configuration de VPC Service Controls, consultez la page Configurer un périmètre de service à l'aide de VPC Service Controls.

  2. Assurez-vous que le service servicecontrol.googleapis.com de votre implémentation de VPC Service Controls n'est pas limité.