Integrazione del backend dell'app

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa sezione descrive i passaggi per integrare il backend dell'app con Google Cloud Marketplace. Con questa integrazione puoi gestire account e diritti degli utenti, che indicano che gli utenti hanno acquistato il tuo prodotto da Google Cloud Marketplace. Se hai scelto un modello di prezzi basato sull'utilizzo, puoi anche integrare il backend per segnalare l'utilizzo a Google.

Per un esempio di integrazione di un'applicazione di base con Google Cloud Marketplace e una procedura dettagliata del codice di esempio, consulta il codelab per integrare un servizio gestito.

Per il codice di esempio utilizzato nel codelab, consulta il repository di GitHub.

Prima di iniziare

  • Configura l'accesso all'API Cloud Commerce Partner Procurement, come descritto in Integrazione dell'app: configurazione.
  • Se hai scelto uno schema dei prezzi basato sull'utilizzo, verifica che il tuo Partner Engineer abbia creato un servizio per il quale puoi segnalare l'utilizzo. Il servizio viene visualizzato nel campo Dominio del servizio della sezione Integrazione della fatturazione di Producer Portal.

Creazione di un account di servizio

Per integrare il tuo prodotto con Google Cloud, devi creare un account di servizio nel progetto che stai utilizzando per il prodotto. La tua app utilizza questo account di servizio per interagire con le API Google Cloud Marketplace Partner e ricevere informazioni sugli acquisti degli utenti.

Utilizza Producer Portal per creare e collegare i tuoi account di servizio. Per la procedura dettagliata su come creare un account di servizio, consulta la pagina Creare e gestire account di servizio.

Utilizzo di Producer Portal per integrare il backend dell'app

Per accedere a tutte le informazioni necessarie per integrare il backend della tua app con Google Cloud Marketplace da un'unica posizione, ad esempio gli account di servizio e gli identificatori a livello di piano, puoi utilizzare la sezione INTEGRAZIONE DI FATTURAZIONE di Producer Portal.

Il link diretto al Producer Portal è:

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

Per accedere alla sezione INTEGRAZIONE DI FATTURAZIONE:

  1. Nell'elenco dei prodotti, fai clic sul nome del tuo prodotto.

  2. Nella pagina Panoramica del prodotto, vai alla sezione Integrazione tecnica e fai clic su INTEGRAZIONE DI FATTURAZIONE.

Creare e collegare account di servizio in Producer Portal

Puoi utilizzare la sezione INTEGRAZIONE DI FATTURAZIONE di Producer Portal per creare e collegare gli account di servizio che utilizzi per interagire con le API dei partner e ottenere informazioni sugli acquisti degli utenti.

Il link diretto al Producer Portal è:

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

Nei passaggi seguenti puoi utilizzare account di servizio esistenti o crearne di nuovi. Se crei un nuovo account di servizio, specifica il nome dell'account di servizio nel campo Nome account di servizio e l'ID dell'account di servizio nel campo ID account di servizio, quindi fai clic su CREA E COLLEGA.

Per collegare gli account di servizio:

  1. Nell'elenco dei prodotti, fai clic sul nome del tuo prodotto.

  2. Nella pagina Panoramica del prodotto, vai alla sezione Integrazione tecnica e fai clic su INTEGRAZIONE DI FATTURAZIONE.

  3. Per l'integrazione con l'API Procurement partner, in Collega un account di servizio per chiamare l'API Procurement, fai clic su AGGIUNGI ACCOUNT DI SERVIZIO. Puoi inserire nel campo un account di servizio esistente o crearne uno nuovo.

  4. Per l'integrazione con Pub/Sub, nella sezione Collega un account di servizio per iscriverti all'argomento Pub/Sub, fai clic su AGGIUNGI ACCOUNT DI SERVIZIO. Puoi inserire nel campo un account di servizio esistente o crearne uno nuovo.

  5. Per l'integrazione con l'API Service Control, in Aggiungi roles/servicemanagement.serviceController a un account di servizio, fai clic su AGGIUNGI ACCOUNT DI SERVIZIO. Puoi inserire un account di servizio esistente nel campo o crearne uno nuovo.

Attività dell'account utente

A livello generale, la tua app deve gestire il seguente scenario:

  1. Un utente effettua una richiesta o una modifica in Google Cloud Marketplace, ad esempio per registrarsi per il tuo prodotto.

  2. Google Cloud Marketplace invia una notifica alla tua app tramite Pub/Sub, contenente informazioni sulla richiesta nel campo eventType. Ad esempio, se un utente cambia il diritto, eventType è ENTITLEMENT_PLAN_CHANGED.

    Consulta l'elenco completo dei eventType possibili.

  3. Per approvare la richiesta, la tua app invia una richiesta HTTP POST all'API Partner Procurement.

Le seguenti sezioni descrivono i tipi di richieste che gli utenti possono effettuare e cosa l'app deve fare per gestire le richieste.

Per le chiamate API descritte in questa sezione, utilizza il seguente endpoint:

https://cloudcommerceprocurement.googleapis.com/

Creazione di un account per un nuovo utente

Quando un utente acquista per la prima volta il tuo prodotto, Google Cloud Marketplace crea una risorsa account che monitora la relazione dell'utente con te. Quando la risorsa dell'account viene creata, ricevi una notifica tramite l'argomento Pub/Sub creato per te. Il messaggio Pub/Sub ha il seguente formato:

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

dove USER_ACCOUNT_ID è l'ID account creato da Google Cloud Marketplace e YOUR_PARTNER_ID è un ID assegnato quando il tuo Partner Engineer consente l'accesso all'API Partner Procurement.

Contemporaneamente, l'utente viene indirizzato alla tua pagina di registrazione, dove crea un account nel tuo sistema. Per informazioni sulla creazione della pagina di registrazione, consulta la pagina relativa all'integrazione del frontend della tua applicazione.

Dopo che l'utente si è registrato correttamente, l'app deve chiamare l'API Partner Procurement e indicare che l'account è stato approvato. Gli account vengono creati nello stato ACCOUNT_ACTIVE, ma hanno un valore PENDING nel campo approvals chiamato signup, che indica che l'utente non si è ancora registrato. Per approvare l'account dopo che l'utente si è registrato, utilizza la seguente richiesta HTTP POST:

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

Per controllare lo stato di un account collegato, utilizza la seguente richiesta HTTP GET:

GET v1/providers/YOUR_PARTNER_ID/accounts/USER_ACCOUNT_ID

La risposta è nel seguente formato:

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

Per un elenco dei possibili stati dell'account, consulta la guida di riferimento alle API di providers.accounts.

Gestione dei diritti

Quando i clienti scelgono un piano tariffario per il tuo software, Google crea un diritto, che indica che il cliente ha acquistato il prodotto da Google Cloud Marketplace. Questa sezione esamina come creare e gestire i diritti per i tuoi clienti utilizzando l'API Partner Procurement.

Per ulteriori dettagli sulla gestione dei diritti, consulta la documentazione di riferimento.

Approvare o rifiutare un diritto

Quando un cliente sceglie un piano tariffario, Google Cloud Marketplace crea un diritto e invia il seguente messaggio Pub/Sub alla tua app:

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

dove ENTITLEMENT_ID è un ID creato da Google Cloud Marketplace. Se l'offerta ha una durata specificata, viene specificata in anni e mesi. Se l'offerta ha una data di fine specificata, anziché una durata, il campo indica la durata è vuoto.

Nel tuo sistema, aggiorna l'account dell'utente in modo che rifletta il fatto che ha acquistato un piano. Quindi, per approvare il diritto, presenta una richiesta HTTP POST all'API Partner Procurement e invia l'ENTITLEMENT_ID che stai approvando:

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

Per rifiutare un diritto, utilizza invece il metodo reject nella richiesta HTTP POST:

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

Per specificare un motivo per il rifiuto del diritto nel corpo della richiesta, utilizza il seguente formato:

{
  "reason": "..."
}

Modificare un piano di diritto

A seconda di come hai configurato i tuoi piani tariffari, i tuoi clienti potrebbero essere in grado di modificare il piano. Se un cliente seleziona un nuovo piano tariffario, ricevi un messaggio Pub/Sub nel seguente formato:

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

Se l'offerta ha una durata specificata, viene specificata in anni e mesi. Se l'offerta ha una data di fine specificata, anziché una durata, il campo indica la durata è vuoto.

Per approvare la modifica del piano, effettua la seguente richiesta HTTP POST all'API Partner Procurement:

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

Il corpo della richiesta deve avere il piano approvato:

{
  "pendingPlanName": PLAN_NAME
}

Dopo l'approvazione della modifica, riceverai un altro messaggio Pub/Sub quando la modifica sarà effettiva. Nel messaggio, il campo eventType diventa ENTITLEMENT_PLAN_CHANGED. Per controllare lo stato di un piano, effettua la seguente richiesta all'API Partner Procurement HTTP GET.

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

La risposta è simile alla seguente, con il campo state che indica se il nuovo piano è attivo o se la modifica del piano è ancora in attesa:

{
  "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",
  ...
}

Inviare un messaggio di stato agli utenti.

Se il tempo che intercorre tra un utente che sceglie un piano tariffario e l'approvazione di un diritto da parte di un backend è di poche ore o più, è consigliabile fornire un messaggio di stato agli utenti. In questo messaggio, indica l'avanzamento dell'approvazione e, se disponibile, quando prevedi che l'approvazione sia stata completata.

Per inviare un messaggio di stato, effettua la seguente richiesta HTTP POST all'API Procurement:

POST v1/providers/your-partner-id/entitlements/entitlement_id:updateUserMessage

Nel corpo della richiesta, fornisci il testo del messaggio, simile al seguente esempio:

{
  "message": "Approval expected in 2 days"
}

Annullamento dei diritti in corso

Se un utente decide di annullare il diritto, riceverà una notifica Pub/Sub. Come per la modifica di un piano, l'effettiva cancellazione potrebbe essere applicata alla fine del ciclo di fatturazione corrente.

La notifica è nel seguente formato:

{
  "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",
    "cancellationDate": "...",
    "updateTime": "..."
  },
}

Eliminare un diritto

Se un utente invia una richiesta diretta all'Assistenza Google o se abbandona la piattaforma, i suoi diritti vengono annullati immediatamente e i suoi diritti e account vengono eliminati dopo un periodo di tolleranza di 60 giorni. Per proteggere la privacy dell'utente, devi eliminare i suoi dati dai tuoi server quando ricevi una notifica.

Se i diritti vengono annullati e l'account viene eliminato, riceverai notifiche simili alla seguente:

{
  "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": "...",
  },
}

Elenco dei tipi di eventi per le attività dell'account

Di seguito è riportato un elenco dei eventType che l'app potrebbe ricevere nei messaggi Pub/Sub:

Tipo di eventoDescrizione
ACCOUNT_CREATION_RICHIESTADeprecato
ACCOUNT_ATTIVOIndica che l'account del cliente è stato creato.
ACCOUNT_ELIMINATOIndica che l'account del cliente è stato eliminato dai sistemi Google Cloud.
ENTITLEMENT_CREATION_REQUESTIndica che un cliente ha selezionato uno dei tuoi piani tariffari.
ENTITLEMENT_ACTIVEIndica che il piano scelto da un cliente è ora attivo.
ENTITLEMENT_PLAN_CHANGE_REQUESTIndica che un cliente ha scelto un nuovo piano.
ENTITLEMENT_PLAN_CHANGEDIndica che il cambio di piano di un cliente è stato approvato e ha effetto
ENTITLEMENT_PLAN_CHANGE_CANCELLEDIndica che la modifica del piano di un cliente è stata annullata, perché non è stata approvata o perché è tornato al piano precedente.
ENTITLEMENT_PENDING_CANCELLATIONIndica che un cliente ha annullato il piano e l'annullamento è in attesa fino alla fine del ciclo di fatturazione.
ENTITLEMENT_CANCELLATION_REVERTEDIndica che l'annullamento in attesa del cliente è stato annullato. Tieni presente che gli annullamenti non possono essere annullati dopo che sono stati definitivi.
ENTITLEMENT_CANCELLEDIndica che il piano di un cliente è stato annullato.
ENTITLEMENT_ANNULLAMENTOIndica che il piano di un cliente è in fase di annullamento.
ENTITLEMENT_RENEWEDIndica che il diritto di un cliente è stato rinnovato per un altro periodo di tempo. Non devi intraprendere alcuna azione per completare il rinnovo.
ENTITLEMENT_OFFER_ENDEDIndica che l'offerta privata di un cliente è terminata. Se il diritto del cliente è stato annullato, viene attivato un evento ENTITLEMENT_CANCELLED separato. Se il diritto del cliente è ancora attivo, il piano torna a essere a prezzo non scontato.
ENTITLEMENT_DELETEDIndica che le informazioni sul piano di un cliente sono state eliminate da Google Cloud Marketplace.

(Per i prezzi basati sull'utilizzo) Segnalazione dell'utilizzo a Google

Se scegli un prezzo basato sull'utilizzo per il tuo prodotto, devi segnalare l'utilizzo dell'applicazione all'API Service Control.

Per un'introduzione a Service Control, consulta la Guida introduttiva.

Consigliamo di utilizzare Producer Portal per creare un account di servizio in Producer Portal da usare con Service Control.

Quando viene creato un diritto, devi chiamare l'API Partner Procurement per recuperare un usageReportingId, utilizzando la seguente richiesta di HTTP GET:

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

La risposta contiene informazioni sul diritto, nel seguente formato:

{
  "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": "..."
}

Per segnalare l'utilizzo, devi prima effettuare una chiamata API services.check, per verificare la configurazione del servizio. Nella risposta, se l'oggetto checkErrors[] è vuoto, effettua una chiamata API services.report per inviare il rapporto sull'utilizzo.

Il report di utilizzo è un'API Service Control Operation. Di seguito è riportato un esempio di report di utilizzo per example-messaging-service che invia informazioni sullo spazio di archiviazione utilizzato dal cliente:

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

dove:

  • operationId è una stringa univoca generata dall'istanza di servizio. Devi utilizzare lo stesso operationId per le operazioni check e report.

  • consumerId corrisponde a usageReportingId del diritto.

  • startTime e endTime rappresentano le ore di inizio e di fine dell'intervallo totale dell'operazione report. Nella maggior parte dei casi, il valore di startTime di un'operazione report deve avere lo stesso valore di endTime dell'operazione report precedente.

    Se il servizio di un cliente viene disabilitato prima di startTime di un'operazione report , la chiamata API services.check invia un errore nell'oggetto checkErrors[] e al cliente non viene addebitato l'intervallo corrispondente.

  • MetricValueSet contiene intervalli di tempo uno o intermedi e i valori delle metriche aggiornati corrispondenti. Puoi definire le metriche del servizio quando scegli e invii il modello di prezzi.

    Puoi visualizzare e fare riferimento agli identificatori per le tue metriche nella sezione Integrazione tecnica di Producer Portal.

  • userLabels sono etichette create dall'utente, definite come stringhe di coppie chiave-valore che rispettano requisiti di sintassi specifici. Queste etichette vengono inoltrate agli strumenti di gestione dei costi della fatturazione Cloud per l'attribuzione. Per le convenzioni di etichettatura consigliate, consulta le best practice per l'etichettatura di utilizzo.

Se l'API services.check restituisce uno o più dei seguenti errori, ti consigliamo di interrompere la fornitura del servizio al cliente fino alla risoluzione dell'errore:

  • SERVICE_NOT_ACTIVATED
  • BILLING_DISABLED
  • PROJECT_DELETED

Best practice per i report sull'utilizzo

Quando segnali l'utilizzo, ad esempio il funzionamento dell'utente o l'utilizzo delle risorse, tieni presente le seguenti informazioni per garantire che la fatturazione dei clienti venga eseguita correttamente.

Segnalazione dell'utilizzo al momento dell'evento

I ritardi nei report sull'utilizzo riducono l'esperienza di gestione dei costi dei clienti e potrebbero non essere riportati nei report dei partner. I provider di servizi devono segnalare l'utilizzo entro un'ora dalla generazione.

Se hai bisogno di più tempo per segnalare l'utilizzo, contatta il tuo Partner Engineer.

Segnalazione dell'utilizzo dopo l'annullamento di un diritto

In caso di utilizzo non segnalato dopo che un diritto viene annullato, puoi comunque segnalarlo con un timestamp che rifletta il momento effettivo in cui è stato generato l'utilizzo. Il timestamp deve precedere l'annullamento del diritto. Segnala questo utilizzo entro un'ora. Non devi segnalare alcun utilizzo come nuovo utilizzo una volta terminato il diritto.

Report sull'utilizzo alla fine del mese

La finestra di reporting di un'ora si applica alla scadenza data di fine mese. Per assicurarti che l'utilizzo venga riportato nella fattura del mese in corso, segnala l'utilizzo entro le 01:00, negli Stati Uniti e nell'ora del Pacifico canadese (UTC-7 o UTC-8) del giorno successivo.

Ad esempio, per una fattura di settembre, segnala l'utilizzo entro il 1o ottobre, alle 01:00, Stati Uniti e Ora del Canada canadese (UTC-7 o UTC-8).

Se l'utilizzo viene registrato più tardi nel corso della giornata, potrebbe non essere incluso nella fattura del mese in corso.

Soluzione per le azioni del cliente che impediscono l'utilizzo dei report al momento del verificarsi

Se non puoi segnalare l'utilizzo o se il servizio o la fatturazione vengono disattivati per un tempo prolungato, ti consigliamo di fornire al cliente un periodo di tolleranza per ripristinare il servizio. Ti consigliamo di non superare i 30 giorni. Durante il periodo di tolleranza, ti consigliamo di:

  • Riduci il servizio fornito. Ad esempio, per il cliente puoi passare a un livello gratuito o iniziare a rifiutare le chiamate.

  • Continua a raccogliere il log di utilizzo quando il servizio è disabilitato. Ti consigliamo di raccogliere l'utilizzo con la suddivisione dell'addebito al massimo, una finestra di un'ora, in modo che possa essere riprodotto dopo l'abilitazione del servizio.

Quando il servizio è attivato, devi segnalare l'utilizzo raccolto durante la disattivazione del servizio come utilizzo effettivo al momento della raccolta dei dati. Devi anche ripristinare i normali report sull'utilizzo.

Per le app Kubernetes, se i report sull'utilizzo non vanno a buon fine durante l'avvio dell'app, consigliamo di interromperla in modo che i clienti ricevano un feedback immediato e possano risolvere il problema.

Best practice per l'etichettatura di utilizzo

Per i prodotti SaaS basati sull'utilizzo, l'utilizzo viene attribuito a un singolo progetto specificato dal campo usageReportingId. In alcuni scenari, un prodotto SaaS potrebbe essere condiviso ampiamente all'interno dell'organizzazione di un cliente e utilizzato in molti progetti dei clienti. Per abilitare il supporto per un'attribuzione dei costi più specifica, è consigliabile che i prodotti SaaS basati sull'utilizzo includano il campo userLabels facoltativo nell'operazione del report sull'utilizzo.

Se il tuo servizio supporta in modo nativo un concetto di etichette di risorse, ti consigliamo di inoltrare tali etichette nei report di utilizzo. Le etichette devono essere conformi ai requisiti di sintassi.

Google Cloud Marketplace prenota le seguenti etichette. Puoi utilizzare queste etichette per identificare contesto aggiuntivo da utilizzare nella tua piattaforma di servizi nativi. Ti consigliamo di includere queste etichette nei report sull'utilizzo per impostazione predefinita.

Chiave di etichettaValore etichettaDescrizione>
cloudmarketplace.googleapis.com/resource_name USER_SUPPLIED Il nome della risorsa associata a una metrica di utilizzo.
cloudmarketplace.googleapis.com/container_name USER_SUPPLIED Il nome di un container di risorse.

Le etichette vengono inoltrate agli strumenti di gestione dei costi della fatturazione Cloud, che includono rapporti sui costi ed esportazioni della fatturazione.

Esempio di etichettatura di utilizzo

Per questo esempio, supponiamo che la tua organizzazione offra un prodotto di archiviazione denominato SaaS Storage Solutions.

Un cliente, Carlo, ha acquistato la tua offerta di spazio di archiviazione per il suo progetto Google Cloud e-commerce-website per ospitare i database user_profiles_db e products_db per il suo sito web di e-commerce:

  • user_profiles_db contiene informazioni sugli utenti che visitano il sito di Carlo.
  • products_db contiene informazioni sui prodotti venduti da Carlo sul suo sito.

Se vuoi fornire a Carl un'analisi dettagliata dei costi di utilizzo, puoi utilizzare la coppia chiave-valore userLabels per segnalare separatamente il costo di utilizzo per ogni database.

Ad esempio, per segnalare il costo attribuito all'utilizzo dello spazio di archiviazione products_db di Carlo, puoi inviare il seguente rapporto, che indica che lo spazio di archiviazione products_db di Carlo costa 100 unità:

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()

Per un esempio più dettagliato di utilizzo di userLabels, puoi consultare il codelab su SaaS.

(Facoltativo) Integra i report con Virtual Private Cloud (VPC)

Se vuoi utilizzare Virtual Private Cloud (VPC) nell'ambiente in cui viene eseguito il servizio del tuo prodotto, devi completare i passaggi seguenti per integrare i rapporti di Google Cloud Marketplace con VPC. Per impostazione predefinita, le VM di Compute Engine nel VPC possono comunicare solo internamente. Devi configurare una delle VM in modo che comunichi esternamente, in modo che le altre VM nel tuo VPC possano usarla per i report.

Prima di iniziare

Configurare l'accesso privato Google

Per consentire alle macchine virtuali (VM) del tuo prodotto Compute Engine di comunicare esternamente per la creazione di report, devi configurare l'accesso privato Google. Per scoprire di più sulla configurazione dell'accesso privato Google, consulta Configurare l'accesso privato Google.

  1. Abilita l'accesso privato Google per il tuo ambiente di servizio.

  2. Configura DNS per risolvere le richieste a private.googleapis.com.

  3. Crea una route personalizzata per le API di Google:

    • In Nome, specifica route-google-apis-services.

    • In Rete, seleziona il tuo VPC.

    • In Intervallo IP di destinazione, specifica 199.36.153.8/30.

    • In Priority (Priorità), specifica 0.

    • Per Tag istanza, specifica google-apis-services.

    • In Hop successivo, seleziona Gateway Internet predefinito.

  4. Crea una regola firewall VPC per consentire la comunicazione tra il prodotto e le API di Google:

    • In Nome, specifica google-apis-services.

    • In Descrizione, specifica Allow egress traffic to Google APIs and services.

    • Attiva il logging delle regole firewall.

    • In Rete, seleziona il tuo VPC.

    • In Direzione del traffico, seleziona In uscita.

    • Per Azione in caso di corrispondenza, seleziona Consenti.

    • In Nome, specifica google-apis-services.

    • Per Target, seleziona Specified target tags, quindi per Tag target, specifica google-apis-services.

    • Per il Filtro di destinazione, seleziona IPv4 ranges, mentre per gli intervalli IPv4 di destinazione specifica 199.36.153.8/30.

    • In Protocolli e porte, seleziona Allow all.

  5. In Google Cloud Console, seleziona la VM che vuoi utilizzare per segnalare l'utilizzo del prodotto. In Tag di rete, aggiungi google-apis-services e fai clic su SALVA.

  6. In Interfacce di rete, individua l'interfaccia di rete del tuo VPC.

  7. Nella colonna Subnet, fai clic sul link della subnet. Nella pagina Dettagli subnet, fai clic su MODIFICA e imposta Accesso privato Google su On.

  8. Fai clic su SALVA.

(Facoltativo) Integra i rapporti con i Controlli di servizio VPC

Se vuoi utilizzare i controlli di servizio VPC nell'ambiente in cui viene eseguito il servizio del prodotto, devi completare i passaggi seguenti per integrare i report di Google Cloud Marketplace con i Controlli di servizio VPC:

  1. Configura l'implementazione preferita dei Controlli di servizio VPC nel tuo ambiente di servizio. Per saperne di più sulla configurazione di Controlli di servizio VPC, consulta Configurare un perimetro di servizio utilizzando i Controlli di servizio VPC.

  2. Assicurati che il servizio servicecontrol.googleapis.com nell'implementazione dei Controlli di servizio VPC non sia limitato.