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 Cloud Marketplace. Con questa integrazione puoi gestire gli account e i diritti degli utenti, che indicano che gli utenti hanno acquistato il prodotto da Cloud Marketplace. Se hai scelto un modello di prezzi basato sull'utilizzo, devi anche integrare il backend per segnalare l'utilizzo a Google.

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

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

Prima di iniziare

  • Configura l'accesso all'API Cloud Commerce Partner Procurement, come descritto nella sezione 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 cui puoi segnalare l'utilizzo. Questo servizio viene visualizzato nel campo Dominio del servizio della sezione Integrazione della fatturazione di Producer Portal.

Crea un account di servizio

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

Usa Producer Portal per creare e collegare i tuoi account di servizio. Per la procedura dettagliata su come creare un account di servizio, consulta Creazione e gestione degli account di servizio.

Usa Producer Portal per integrare il backend dell'app

Per accedere a tutte le informazioni necessarie per integrare il backend dell'app con Cloud Marketplace da un'unica posizione, come gli account di servizio e gli identificatori a livello di piano, puoi utilizzare la sezione Integrazione della 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 della 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 della fatturazione.

Creare e collegare account di servizio in Producer Portal

Puoi utilizzare la sezione Integrazione della fatturazione di Producer Portal per creare e collegare gli account di servizio che utilizzi per interagire con le API Partner e per 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 della fatturazione.

  3. Per eseguire l'integrazione con l'API Partner Procurement, fai clic su Add service account (Aggiungi account di servizio) nella sezione Link a service call to call Procurement API. Puoi inserire un account di servizio esistente nel campo o creare un nuovo account di servizio.

  4. Per eseguire l'integrazione con Pub/Sub, nella sezione Collega un account di servizio per iscriverti a un argomento Pub/Sub, fai clic su Aggiungi account di servizio. Puoi inserire un account di servizio esistente nel campo o creare un nuovo account di servizio.

  5. Per eseguire 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

In linea generale, la tua app deve gestire il seguente scenario:

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

  2. Cloud Marketplace invia una notifica all'app tramite Pub/Sub, contenente informazioni sulla richiesta nel campo eventType. Ad esempio, se un utente modifica il proprio diritto, eventType è ENTITLEMENT_PLAN_CHANGED.

    Consulta l'elenco completo dei eventType possibili.

  3. Per approvare la richiesta, l'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 deve fare la tua app per gestire le richieste.

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

https://cloudcommerceprocurement.googleapis.com/

Creare un account per un nuovo utente

Quando un utente acquista per la prima volta il tuo prodotto, Cloud Marketplace crea una risorsa dell'account che monitora la relazione dell'utente con te. Quando viene creata la risorsa account, 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 Cloud Marketplace e YOUR_PARTNER_ID è un ID assegnato a te quando il tuo Partner Engineer abilita l'accesso all'API Partner Procurement.

Contemporaneamente, l'utente viene indirizzato alla pagina di registrazione, dove crea un account nel tuo sistema. Per informazioni sulla creazione della pagina di registrazione, consulta Integrazione del frontend dell'app.

Approvare l'account di un utente

Dopo che l'utente si è registrato, 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'}

Controllare lo stato dell'account di un utente

Per controllare lo stato di un account collegato, usa 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 degli account, consulta la documentazione di riferimento per le 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 Cloud Marketplace. Questa sezione esamina come creare e gestire i diritti per i tuoi clienti utilizzando l'API Partner Procurement.

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

Approvare o rifiutare un diritto

Quando un cliente sceglie un piano tariffario, 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 Cloud Marketplace. Se l'offerta ha una durata specificata, tale durata viene fornita in anni e mesi. Se l'offerta ha una data di fine specificata, invece di una durata, il campo indica che la durata è vuota.

Nel tuo sistema, aggiorna l'account dell'utente in modo che mostri di aver acquistato un piano. Quindi, per approvare il diritto, effettua una richiesta HTTP POST all'API Partner Procurement e invia la 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 fornire 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 imposti i tuoi piani tariffari, i tuoi clienti potrebbero essere in grado di modificarli. Se un cliente seleziona un nuovo piano tariffario, riceverai 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, tale durata viene fornita in anni e mesi. Se l'offerta ha una data di fine specificata, invece di una durata, il campo indica che la durata è vuota.

Per approvare la modifica del piano, invia 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 che deve essere approvato:

{
  "pendingPlanName": PLAN_NAME
}

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

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 del backend è di alcune ore o più, ti consigliamo di fornire un messaggio di stato agli utenti. In questo messaggio, indica l'avanzamento dell'approvazione e, se disponibile, quando prevedi che l'approvazione è stata completata.

Per fornire 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 all'esempio seguente:

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

Annullare un diritto

Se un utente decide di annullare il proprio diritto, ricevi una notifica Pub/Sub. Analogamente alla modifica di un piano, l'annullamento effettivo potrebbe essere applicata alla fine del ciclo di fatturazione corrente.

La notifica ha il 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 esce dalla piattaforma Google, i suoi diritti vengono annullati immediatamente e il suo diritto e i suoi 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.

Quando i diritti vengono annullati e l'account viene eliminato, riceverai notifiche simili alle seguenti:

{
  "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 la tua app potrebbe ricevere nei messaggi Pub/Sub:

Tipo di eventoDescrizione
ACCOUNT_CREATION_REQUESTEDRitirato
ACCOUNT_ACTIVEIndica che l'account del cliente è stato creato.
ACCOUNT_ELIMINATOIndica che l'account del cliente è stato eliminato dai sistemi Google Cloud.
ENTITLEMENT_CREATION_REQUESTEDIndica che un cliente ha selezionato uno dei tuoi piani tariffari.
ENTITLEMENT_OFFER_ACCEPTEDIndica che un'offerta è stata accettata da un cliente. Include l'ora di inizio programmata dell'offerta, se presente.
TITOLO_ATTIVATOIndica che il piano scelto da un cliente è ora attivo.
ENTITLEMENT_PLAN_CHANGE_REQUESTEDIndica che un cliente ha scelto un nuovo piano.
ENTITLEMENT_PLAN_CHANGEDIndica che la modifica al piano di un cliente è stata approvata e che le modifiche sono state applicate.
ENTITLEMENT_PLAN_CHANGE_CANCELLEDIndica che la modifica del piano di un cliente è stata annullata perché non è stata approvata o perché è stato ripristinato il 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 di un cliente è stato annullato. Tieni presente che gli annullamenti non possono essere ripristinati dopo che sono definitivi.
ENTITLEMENT_CANCELLEDIndica che il piano di un cliente è stato annullato.
ANNULLAMENTO ENTITLEMENTIndica 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.
OFFERTA_EN_MENT_END_ENDIndica 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 ripristina i prezzi non scontati.
TITOLO_ELIMINATOIndica che le informazioni sul piano di un cliente sono state eliminate da Cloud Marketplace.

(Per i prezzi basati sull'utilizzo) Segnalare l'utilizzo a Google

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

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

Ti consigliamo di utilizzare Producer Portal per creare un account di servizio in Producer Portal da utilizzare con Service Control.

Quando viene creato un diritto, devi chiamare l'API Partner Procurement per recuperare un usageReportingId, utilizzando la seguente richiesta 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 report sull'utilizzo.

Il report sull'utilizzo è un'API Service Control Operation. Di seguito è riportato un esempio di report sull'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 nel diritto.

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

    Se il servizio di un cliente viene disattivato prima di startTime in un'operazione report, la chiamata API services.check invia un errore nell'oggetto checkErrors[] e non viene addebitato al cliente 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 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 del 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 finché l'errore non verrà risolto:

  • SERVICE_NOT_ACTIVATED
  • BILLING_DISABLED
  • PROJECT_DELETED

Best practice per i report sull'utilizzo

Quando registri l'utilizzo, ad esempio l'operazione di un utente o l'utilizzo di risorse, tieni presente le seguenti informazioni per assicurarti che la fatturazione ai clienti avvenga correttamente.

Creazione di report sull'utilizzo al momento dell'occorrenza

I ritardi nella creazione di report sull'utilizzo riducono l'esperienza di gestione dei costi dei tuoi clienti e potrebbero non comparire nei report dei partner. I fornitori di servizi devono segnalare l'utilizzo entro un'ora dall'utilizzo generato.

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

Segnalare l'utilizzo dopo l'annullamento di un diritto

Se l'utilizzo non è stato segnalato dopo l'annullamento di un diritto, puoi comunque segnalarlo con un timestamp che rifletta l'ora effettiva 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 al termine del diritto.

Creazione di report sull'utilizzo alla fine del mese

Il periodo di report di un'ora si applica alla scadenza limite di fine mese. Per accertarti che l'utilizzo venga indicato nella fattura del mese in corso, segnala l'utilizzo entro le 01:00, ora del Pacifico USA e UTC-7 o UTC-8 del giorno successivo.

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

Se l'utilizzo viene registrato più avanti nella giornata, potrebbe non essere incluso nella fattura del mese corrente.

Soluzione per le azioni dei clienti che impediscono l'utilizzo dei report al momento dell'occorrenza

Se non puoi segnalare l'utilizzo o se il servizio o la fatturazione vengono disattivati per un periodo di 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 questo periodo di tolleranza, valuta la possibilità di:

  • Esegui la riduzione del servizio fornito. Ad esempio, passa il cliente a un livello gratuito o inizia a rifiutare le chiamate.

  • Continua a raccogliere il log di utilizzo mentre il servizio è disattivato. Ti consigliamo di raccogliere l'utilizzo con la suddivisione degli addebiti al massimo, entro un periodo di un'ora, in modo che possa essere riprodotto dopo l'attivazione del servizio.

Quando il servizio è attivato, devi registrare l'utilizzo raccolto mentre il servizio è stato disattivato come utilizzo effettivo al momento della raccolta dei dati. Devi anche riprendere i normali report sull'utilizzo.

Per le app Kubernetes, se i report sull'utilizzo hanno esito negativo 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 casi, un prodotto SaaS può essere condiviso ampiamente all'interno dell'organizzazione di un cliente e utilizzato in molti progetti del cliente. Per abilitare il supporto per un'attribuzione dei costi più specifica, consigliamo che i prodotti SaaS basati sull'utilizzo includano il campo facoltativo userLabels nell'operazione del report di utilizzo.

Se il servizio supporta in modo nativo il concetto di etichette delle risorse, ti consigliamo di inoltrarle nei report sull'utilizzo. Le etichette devono essere conformi ai requisiti di sintassi.

Cloud Marketplace prenota le seguenti etichette. Puoi utilizzare queste etichette per identificare contesto aggiuntivo per l'utilizzo all'interno della 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 del fatturazione Cloud, inclusi i report sui costi e le esportazioni della fatturazione.

Esempio di etichettatura di utilizzo

In questo esempio, immagina che la tua organizzazione offra un prodotto di archiviazione chiamato Soluzioni di archiviazione SaaS.

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 una suddivisione dettagliata dei costi di utilizzo, puoi utilizzare la coppia chiave-valore userLabels per segnalare il costo di utilizzo di ogni database separatamente.

Ad esempio, per segnalare il costo attribuito all'utilizzo di products_db da parte di Carlo, potresti inviare il seguente report, il che indica che l'archiviazione di products_db di Carla ha un costo pari a 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 dell'utilizzo di userLabels, puoi fare riferimento al codelab di 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 report di Google Cloud Marketplace con VPC. Per impostazione predefinita, le VM di Compute Engine nel tuo VPC possono comunicare solo internamente. Devi configurare una delle VM per comunicare esternamente, in modo che le altre VM nel tuo VPC possano utilizzarlo per i report.

Prima di iniziare

Configura l'accesso privato Google

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

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

  2. Configura il 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.

    • In Tag di istanza, specifica google-apis-services.

    • In Hop successivo, seleziona Gateway Internet predefinito.

  4. Crea una regola firewall VPC per consentire al tuo prodotto di comunicare con le API di Google:

    • In Nome, specifica google-apis-services.

    • Per la descrizione, specifica Allow egress traffic to Google APIs and services.

    • Abilita il logging delle regole del firewall.

    • In Rete, seleziona il tuo VPC.

    • In Direzione del traffico, seleziona In uscita.

    • Per il campo 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. Nella console Google Cloud, 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 report con 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 che preferisci 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 nella tua implementazione dei Controlli di servizio VPC non sia limitato.