Integrazione del backend dell'app

Questa sezione descrive i passaggi per integrare il backend dell'app con Google Cloud Marketplace. Con questa integrazione, puoi gestire il traffico account e entitlements, che indicano che gli utenti hanno acquistato il prodotto tramite Google Cloud Marketplace. Se scegli un modello di prezzi basato sull'utilizzo, integrare il backend per segnalare l'utilizzo a Google.

Ecco un esempio di integrazione di un'app di base con Cloud Marketplace e un la procedura dettagliata del codice campione, codelab per l'integrazione di un servizio gestito.

Per il codice campione utilizzato nel codelab, consulta Repository GitHub.

Prima di iniziare

Crea un account di servizio

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

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

Usare Producer Portal per integrare il backend dell'app

Per accedere a tutte le informazioni necessarie per integrare il backend dell'app Cloud Marketplace da un'unica posizione, ad esempio i tuoi account di servizio e il tuo piano di livello superiore, puoi usare la sezione Integrazione della fatturazione di Producer Portale.

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 tuo prodotto, vai alla sezione Integrazione tecnica. e fai clic su Integrazione della fatturazione.

Creazione e collegamento degli account di servizio in Producer Portal

Puoi usare 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 utenti acquisti.

Il link diretto al Producer Portal è:

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

Nei passaggi successivi, puoi usare account di servizio esistenti o crearne di nuovi account di servizio. Se crei un nuovo account di servizio, specifica il servizio nel campo Nome account di servizio e la riga 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 tuo prodotto, vai alla sezione Integrazione tecnica. e fai clic su Integrazione della fatturazione.

  3. Per l'integrazione con l'API Partner Procurement, in Collega un servizio account per chiamare l'API Procurement, fai clic su Aggiungi account di servizio. Puoi inserisci un account di servizio esistente nel campo oppure creane uno nuovo .

  4. Per l'integrazione con Pub/Sub, in Collega un account di servizio a sottoscrivi un argomento Pub/Sub, fai clic su Aggiungi account di servizio. Puoi inserisci un account di servizio esistente nel campo oppure creane uno nuovo .

  5. Per eseguire l'integrazione con l'API Service Control, in Add roles/servicemanagement.serviceController a un account di servizio, fai clic su Aggiungi account di servizio. Puoi inserire un account di servizio esistente nella o creare un nuovo account di servizio.

Attività account utente

A livello generale, l'app deve gestire il seguente scenario:

  1. Un utente invia una richiesta o una modifica in Cloud Marketplace, ad esempio firmando per il tuo prodotto.

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

    Consulta l'elenco completo dei possibili eventType.

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

Le seguenti sezioni descrivono i tipi di richieste che gli utenti possono effettuare, e cosa deve fare l'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 un risorsa di account che tenga traccia della relazione dell'utente con te. Quando l'account viene creata una risorsa, riceverai una notifica tramite l'argomento Pub/Sub creato per te. Il messaggio Pub/Sub è nel seguente formato:

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

dove USER_ACCOUNT_ID è l'ID account creato Cloud Marketplace e YOUR_PARTNER_ID sono gli ID che ti vengono assegnati 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 nel tuo sistema. Per informazioni sulla creazione della pagina di registrazione, vedi Integrazione del frontend dell'app.

Approvare l'account di un utente

Dopo che l'utente ha eseguito la registrazione, l'app deve chiamare il metodo API Partner Procurement e indica che l'account è stato approvato. Gli account vengono creati nello stato ACCOUNT_ACTIVE, ma hanno un PENDING nel campo approvals denominato signup, che indica che l'utente non ha ancora effettuato la registrazione. Per approvare l'account dopo la registrazione dell'utente, utilizza la seguente richiesta di 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, utilizza la seguente richiesta HTTP GET:

GET v1/providers/YOUR_PARTNER_ID/accounts/USER_ACCOUNT_ID

La risposta ha il 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 di possibili stati dell'account, consulta Riferimento API providers.accounts.

Gestire i diritti

Quando i clienti scelgono un piano tariffario per il tuo software, Google crea un entitlement, che indica che il cliente ha acquistato il tuo prodotto da Google Cloud Marketplace. In questa sezione viene illustrato come creare e gestire i diritti dei tuoi clienti usando l'API Partner Procurement.

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

Se hai abilitato più ordini per lo stesso prodotto, l'API Partner Procurement può inviare più eventi con il tipo di evento ENTITLEMENT_ACTIVE per lo stesso ACCOUNT_ID, ciascuno con un ENTITLEMENT_ID univoco per offerte diverse. In questo caso, assicurati di modificare la logica di gestione degli eventi per l'applicazione in modo che risponda all'ENTITLEMENT_ID anziché a ACCOUNT_ID o PRODUCT_ID.

Devi inoltre apportare modifiche all'integrazione del frontend per gestire il nuovo oggetto orders inviato nel payload JWT. Per ulteriori informazioni, vedi Integrazione del frontend dell'app.

Per ulteriori informazioni sull'attivazione di più ordini dello stesso prodotto, vedi Attivare più ordini per lo stesso prodotto.

Approvare o rifiutare un diritto

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

Nel sistema, aggiorna l'account dell'utente in modo che rifletta l'acquisto. un piano. Quindi, per approvare il diritto, effettua una richiesta HTTP POST alla API Partner Procurement e invia ENTITLEMENT_ID che sei approvazione:

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

Per rifiutare un diritto, usa il metodo reject in HTTP POST richiesta:

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

Per fornire un motivo per il rifiuto del diritto nel corpo della richiesta, utilizza l'elemento seguente formato:

{
  "reason": "..."
}

Modificare un piano dei diritti

A seconda di come hai configurato i piani tariffari, i tuoi clienti potrebbero essere in grado di e cambiare 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, questa durata viene indicata in anni e mesi. Se per l'offerta è specificata una data di fine, anziché una durata, il campo che indica che la durata è vuota.

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

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

Il corpo della richiesta deve contenere il piano che viene approvato:

{
  "pendingPlanName": PLAN_NAME
}

Una volta approvata la 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: 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",
  ...
}

Invia un messaggio di stato agli utenti

Se il tempo che intercorre tra la scelta di un piano tariffario da parte di un utente e l'approvazione del backend se un diritto è di poche ore o più, ti consigliamo di fornire uno stato messaggio agli utenti. In questo messaggio, indica l'avanzamento dell'approvazione e se disponibili, quando prevedi che l'approvazione sia completa.

Per inviare un messaggio di stato, effettua la seguente richiesta HTTP POST al 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"
}

Annullare un diritto

Se un utente decide di annullare il proprio diritto, riceverai un Notifica Pub/Sub. Analogamente alla modifica di un piano, l'annullamento potrebbe diventare effettivo 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",
    "updateTime": "..."
  },
}

Eliminazione di un diritto

Se un utente invia una richiesta diretta all'Assistenza Google o se abbandona la piattaforma Google, vengono annullati immediatamente e il relativo diritto e i relativi 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 notificato.

Quando i diritti vengono annullati e l'account viene eliminato, ricevi 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 in I messaggi Pub/Sub:

eventTypeDescrizione
ACCOUNT_CREATION_REQUESTEDRitirato
ACCOUNT_ACTIVEIndica che l'account del cliente è stato creato.
ACCOUNT_DELETEDIndica 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 pianificata dell'offerta, se presente.
ENTITLEMENT_ACTIVEIndica 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 del 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é è tornato al piano precedente.
ENTITLEMENT_PENDING_CANCELLATIONIndica che un cliente ha annullato il piano e che 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 annullati quando sono definitivi.
ENTITLEMENT_CANCELLEDIndica che il piano di un cliente è stato annullato.
ENTITLEMENT_CANCELLINGIndica che il piano di un cliente è in fase di annullamento.
ENTITLEMENT_RENEWEDIndica che il diritto di un cliente è stato rinnovato per un altro periodo. Non è richiesta alcuna azione da parte tua 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 suo piano verrà ripristinato a un prezzo non scontato.
ENTITLEMENT_DELETEDIndica che le informazioni sul piano di un cliente sono state eliminate da Cloud Marketplace.

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

Se per il tuo prodotto scegli un prezzo basato sull'utilizzo, devi segnalare la dall'utilizzo API Service Control.

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

Ti consigliamo di usare Producer Portal per crea un account di servizio in Producer Portal per l'utilizzo 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 un services.check chiamata API, per verificare la configurazione del servizio. Nella risposta, se L'oggetto checkErrors[] è vuoto, crea un services.report Chiamata API 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. Tu deve usare lo stesso operationId per check e report operazioni.

  • consumerId corrisponde al usageReportingId del diritto.

  • startTime e endTime rappresentano l'ora di inizio e l'ora di fine del totale per l'operazione report. Nella maggior parte dei casi, il startTime di un L'operazione report deve avere lo stesso valore dell'operazione endTime della precedente Operazione report.

    Se il servizio di un cliente viene disattivato prima del startTime di un report Operazione, la chiamata API services.check invia un errore in checkErrors[] e al cliente non viene addebitato l'intervallo corrispondente.

  • MetricValueSet contiene uno o intervalli di tempo intermedi e la corrispondente metrica aggiornata e i relativi valori. Definisci le metriche del servizio quando scegliere e inviare il modello di determinazione del prezzo.

    Puoi visualizzare e fare riferimento agli identificatori per le metriche nel Sezione Integrazione tecnica di Producer Portal.

  • userLabels sono etichette create dall'utente, definite come stringhe di coppie chiave-valore che seguono specifico requisiti di sintassi. Queste etichette vengono inoltrate alla fatturazione Cloud di gestione dei costi per l'attribuzione. Per consigliato convenzioni di etichettatura, consulta le Best practice per l'etichettatura dell'utilizzo.

Se l'API services.check restituisce uno o più dei seguenti errori, consigliamo di interrompere la fornitura del servizio al cliente fino all'errore è stato risolto:

  • SERVICE_NOT_ACTIVATED
  • BILLING_DISABLED
  • PROJECT_DELETED

Best practice per i report sull'utilizzo

Quando segnali l'utilizzo, ad esempio le operazioni dell'utente o l'utilizzo delle risorse, Tieni presente le informazioni riportate di seguito per assicurarti che la fatturazione ai tuoi clienti avvenga correttamente.

Utilizzo dei report al momento in cui si verifica

I ritardi nei report sull'utilizzo incidono negativamente sulle prestazioni dei tuoi clienti esperienza nella gestione dei costi potrebbe non essere indicato 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 hai un utilizzo non 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 essere precedente all'annullamento del diritto. Segnala l'utilizzo entro un'ora. Non devi segnalare alcun utilizzo come nuovo utilizzo al termine del diritto.

Utilizzo dei report alla fine del mese

Il periodo di reporting di un'ora si applica alla scadenza limite di fine mese. Per assicurarti che l'utilizzo sia riportato nella fattura del mese in corso, segnala l'utilizzo entro le ore 01:00, ora del Pacifico - USA e Canada (UTC-7 o UTC-8) giorno successivo.

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

Se l'utilizzo viene riportato più avanti nel corso della giornata, potrebbe non essere incluso nel fattura del mese corrente.

Soluzione per le azioni del cliente che impediscono l'utilizzo dei report nel momento in cui si verificano

Se non riesci a segnalare l'utilizzo o se il servizio o la fatturazione sono disabilitati per un prolungato, ti consigliamo di concedere al cliente un periodo di tolleranza ripristinare il servizio. Consigliamo di non superare i 30 giorni. Durante questo periodo di tolleranza, valuta la possibilità di le seguenti:

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

  • Continua a raccogliere il log di utilizzo mentre il servizio è disabilitato. Consigliamo di raccogliere i dati sull'utilizzo con la suddivisione degli addebiti per al massimo di un'ora, in modo che possa essere riprodotta dopo l'abilitazione del servizio.

Quando il servizio è abilitato, devi segnalare l'utilizzo raccolto mentre è 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 non riescono durante l'avvio, consigliare di interrompere automaticamente l'app, in modo che i clienti vengano immediatamente feedback e possono risolvere il problema.

Best practice per l'etichettatura dell'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 all'interno dell'organizzazione di un cliente e utilizzati in vari progetti del cliente. A attivare il supporto per un'attribuzione dei costi più specifica, è consigliabile che i I prodotti SaaS includono il campo facoltativo userLabels nel report sull'utilizzo operazione.

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

Cloud Marketplace riserva le seguenti etichette. Puoi utilizzare queste etichette per identificare un contesto aggiuntivo per l'utilizzo all'interno della tua piattaforma di servizi nativi. Me 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 alla gestione dei costi della fatturazione Cloud inclusi i report sui costi e esportazioni della fatturazione.

Esempio di etichettatura di utilizzo

Per 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 Progetto Google Cloud e-commerce-website, per ospitare il user_profiles_db e products_db per il 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 utilizza la coppia chiave-valore userLabels per segnalare il costo di utilizzo per ogni separatamente il database.

Ad esempio, per registrare il costo attribuito allo spazio di archiviazione di Carlo products_db di utilizzo, potresti inviare il seguente rapporto, che indica che la Lo spazio di archiviazione products_db sta costando 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()

In questo esempio, service_name è l'ID progetto di Google Cloud di Carl progetto.

Per un esempio più dettagliato di utilizzo di userLabels, puoi fare riferimento alle Codelab SaaS.

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

Se vuoi utilizzare Virtual Private Cloud (VPC) nell'ambiente in eseguire il servizio del tuo prodotto, devi completare i seguenti passaggi 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 con l'esterno, in modo che il resto le VM nel tuo VPC possono usarlo per i report.

Prima di iniziare

Configura l'accesso privato Google

Abilitare la comunicazione tra le macchine virtuali (VM) Compute Engine del tuo prodotto per scopi di reporting, devi configurare Accesso privato Google. Per ulteriori informazioni 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 DNS per risolvere le richieste a private.googleapis.com.

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

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

    • In Rete, seleziona il tuo VPC.

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

    • In Priorità, specifica 0.

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

    • Per 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 corrispondenza di 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.

    • Per Direzione del traffico, seleziona In uscita.

    • Per Azione in caso di corrispondenza, seleziona Consenti.

    • In corrispondenza di Nome, specifica google-apis-services.

    • Per Target, seleziona Specified target tags e poi per Target tag, specifica google-apis-services.

    • Per il Filtro di destinazione, seleziona IPv4 ranges e per il Intervalli IPv4 di destinazione, specifica 199.36.153.8/30.

    • Per Protocolli e porte, seleziona Allow all.

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

  6. In Interfacce di rete, individua la rete del tuo VPC a riga di comando.

  7. Nella colonna Subnet, fai clic sul link della subnet. Dalla subnet dei dettagli, fai clic su MODIFICA e imposta Accesso privato Google su Attivo.

  8. Fai clic su SALVA.

(Facoltativo) Integrare i report con i Controlli di servizio VPC

Se vuoi utilizzare Controlli di servizio VPC nella in cui viene eseguito il servizio del tuo prodotto, devi completare i seguenti passaggi 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 servizio completamente gestito di Google Cloud. Per saperne di più sulla configurazione dei Controlli di servizio VPC, visita Configura un perimetro di servizio utilizzando Controlli di servizio VPC.

  2. Assicurati che il servizio servicecontrol.googleapis.com nel tuo l'implementazione dei Controlli di servizio VPC non è limitata.