Backend Ihrer Anwendung einbinden

In diesem Abschnitt werden die Schritte zur Integration des Back-Ends Ihrer App mit Cloud Marketplace Mit dieser Integration können Sie die Konten und Berechtigungen, die darauf hinweisen, dass Nutzer dein Produkt bei Cloud Marketplace Wenn Sie ein nutzungsbasiertes Preismodell ausgewählt haben, binden Sie auch Ihr Back-End ein, um die Nutzung an Google zu melden.

Ein Beispiel für die Integration einer einfachen Anwendung in Cloud Marketplace und einer eine Schritt-für-Schritt-Anleitung für den Beispielcode finden Sie in der Codelab zum Einbinden eines verwalteten Dienstes.

Den im Codelab verwendeten Beispielcode finden Sie im GitHub-Repository.

Hinweis

  • Richten Sie den Zugriff auf die Cloud Commerce Partner Procurement API ein, wie unter Anwendung einbinden: Einrichtung beschrieben.
  • Wenn Sie ein nutzungsbasiertes Preisschema ausgewählt haben, sorgen Sie dafür, dass Ihr Partnerentwickler einen Dienst erstellt hat, über den Sie die Verwendung melden können. Dieser Dienst wird im Feld Dienstdomain des Abschnitts „Abrechnungsintegration“ des Producer Portals angezeigt.

Dienstkonto erstellen

Zum Einbinden Ihres Produkts in Google Cloud müssen Sie in dem Projekt, das Sie für Ihr Produkt verwenden, ein Dienstkonto erstellen. Deine App verwendet diese Dienstkonto für die Interaktion mit den Cloud Marketplace Partner APIs und Informationen über die Käufe.

Verwenden Sie das Producer Portal, um Ihre Dienstkonten zu erstellen und zu verknüpfen. Eine ausführliche Anleitung zum Erstellen eines Dienstkontos finden Sie unter Dienstkonten erstellen und verwalten

Producer Portal verwenden, um das Backend Ihrer Anwendung zu integrieren

Um auf alle Informationen zuzugreifen, die Sie zum Integrieren des Back-Ends Ihrer Anwendung in Cloud Marketplace von einem Ort aus, z. B. Ihren Dienstkonten und Tarifen finden Sie in Producer im Bereich Abrechnungsintegration. Portal

Der Link zu Producer Portal lautet:

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

So greifen Sie auf den Bereich Integration der Abrechnung zu:

  1. Klicken Sie in der Produktliste auf den Namen des Produkts.

  2. Gehen Sie auf der Seite Übersicht Ihres Produkts zur technischen Integration. und klicken Sie auf Abrechnungsintegration.

Dienstkonten im Producer Portal erstellen und verknüpfen

Im Bereich Abrechnungsintegration von Producer Portal können Sie die Dienstkonten zu verknüpfen, die Sie für die Interaktion mit den Partner-APIs verwenden, und Informationen über die Käufe.

Der Link zu Producer Portal lautet:

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

In den folgenden Schritten können Sie vorhandene Dienstkonten verwenden oder neue Dienstkonten erstellen. Wenn Sie ein neues Dienstkonto erstellen, geben Sie den Dienst an den Namen des Dienstkontos im Feld Name des Dienstkontos und ID im Feld Dienstkonto-ID ein und klicken Sie dann auf Erstellen und verknüpfen.

So verknüpfen Sie Ihre Dienstkonten:

  1. Klicken Sie in der Produktliste auf den Namen des Produkts.

  2. Gehen Sie auf der Seite Übersicht Ihres Produkts zur technischen Integration. und klicken Sie auf Abrechnungsintegration.

  3. Zur Einbindung in die Partner Procurement API, unter Dienst verknüpfen Konto zum Aufrufen der Procurement API, klicken Sie auf Dienstkonto hinzufügen. Sie können ein vorhandenes Dienstkonto in das Feld eingeben oder ein neues Dienstkonto erstellen.

  4. Zum Einbinden in Pub/Sub finden Sie unter Dienstkonto verknüpfen mit Pub/Sub-Thema abonnieren möchten, klicken Sie auf Dienstkonto hinzufügen. Sie können ein vorhandenes Dienstkonto in das Feld eingeben oder ein neues Dienstkonto erstellen.

  5. Für die Einbindung in die Service Control API klicken Sie unter Hinzufügen roles/servicemanagement.serviceController mit einem Dienstkonto verknüpft haben, klicken Sie auf Fügen Sie ein Dienstkonto hinzu. Sie können ein vorhandenes Dienstkonto in das Feld eingeben oder ein neues Dienstkonto erstellen.

Nutzerkontoaufgaben

Auf übergeordneter Ebene muss Ihre Anwendung für das folgende Szenario geeignet sein:

  1. Ein Nutzer stellt eine Anfrage oder Änderung in Cloud Marketplace, z. B. das Signieren. für Ihr Produkt.

  2. Cloud Marketplace sendet Ihrer Anwendung eine Benachrichtigung über Pub/Sub mit Informationen zu der Anfrage im eventType. Wenn ein Nutzer beispielsweise seine Berechtigung ändert, ist eventType ENTITLEMENT_PLAN_CHANGED.

    Siehe die vollständige Liste der möglichen eventType s.

  3. Zum Genehmigen der Anfrage sendet Ihre Anwendung eine HTTP POST-Anfrage an die Partner Procurement API.

In den folgenden Abschnitten wird beschrieben, auf welche Arten die Nutzer Anfragen stellen können und was Ihre Anwendung tun muss, um die Anfragen zu bearbeiten.

Verwenden Sie für die in diesem Abschnitt beschriebenen API-Aufrufe diesen Endpunkt:

https://cloudcommerceprocurement.googleapis.com/

Konto für einen neuen Nutzer erstellen

Wenn ein Nutzer Ihr Produkt zum ersten Mal kauft, erstellt Cloud Marketplace ein Kontoressource, die die Beziehung des Nutzers zu Ihnen verfolgt. Wenn die Kontoressource erstellt wird, werden Sie über das für Sie erstellte Pub/Sub-Thema benachrichtigt. Die Pub/Sub-Nachricht hat das folgende Format:

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

Dabei ist USER_ACCOUNT_ID die Konto-ID, die von Cloud Marketplace und YOUR_PARTNER_ID sind eine ID, die Ihnen zugewiesen wird, wenn Ihr Partner Der Entwickler aktiviert den Zugriff auf die Partner Procurement API.

Gleichzeitig wird der Nutzer zu Ihrer Anmeldeseite weitergeleitet, wo er ein Konto in Ihrem System erstellt. Wie Sie die Anmeldeseite erstellen, erfahren Sie unter Frontend Ihrer Anwendung einbinden.

Nutzerkonto genehmigen

Nach der erfolgreichen Anmeldung des Nutzers muss Ihre Anwendung die Partner-API aufrufen und angeben, dass das Konto genehmigt wurde. Konten werden im Status ACCOUNT_ACTIVE erstellt, haben jedoch einen PENDING-Eintrag im Feld approvals mit dem Namen signup, der angibt, dass der Nutzer noch nicht angemeldet ist. Verwenden Sie zum Genehmigen des Kontos nach der Anmeldung des Nutzers die folgende HTTP POST-Anfrage:

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

Status eines Nutzerkontos prüfen

Verwenden Sie zum Prüfen des Status eines verknüpften Kontos die folgende HTTP GET-Anforderung:

GET v1/providers/YOUR_PARTNER_ID/accounts/USER_ACCOUNT_ID

Die Antwort hat das folgende Format:

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

Eine Liste möglicher Kontostatus finden Sie in der providers.accounts API-Referenz.

Berechtigungen verwalten

Wenn Kunden ein Preismodell für Ihre Software auswählen, erstellt Google ein entitlement gibt an, dass der Kunde Ihr Produkt bei Cloud Marketplace In diesem Abschnitt wird beschrieben, wie Sie über die Partner Procurement API Ansprüche für Ihre Kunden erstellen und verwalten können.

Weitere Informationen zum Verwalten von Berechtigungen findest du in der Referenzdokumentation nachlesen.

Wenn Sie mehrere Bestellungen desselben Produkts aktiviert haben, kann die Partner Procurement API mehrere Ereignisse mit dem Ereignistyp ENTITLEMENT_ACTIVE für dieselbe ACCOUNT_ID mit jeweils einer eindeutigen ENTITLEMENT_ID für verschiedene Angebote senden. Ändern Sie in diesem Fall die Ereignisverarbeitungslogik für Ihre Anwendung so, dass sie auf ENTITLEMENT_ID statt auf ACCOUNT_ID oder PRODUCT_ID reagiert.

Außerdem müssen Sie Änderungen an Ihrer Front-End-Integration vornehmen, damit das neue orders-Objekt verarbeitet wird, das in der JWT-Nutzlast gesendet wurde. Weitere Informationen finden Sie unter Frontend Ihrer Anwendung einbinden

Weitere Informationen zur Aktivierung mehrerer Bestellungen desselben Produkts finden Sie unter Mehrere Bestellungen desselben Produkts aktivieren.

Berechtigung genehmigen oder ablehnen

Wenn ein Kunde ein Preismodell auswählt, erstellt Cloud Marketplace ein Berechtigung und sendet die folgende Pub/Sub-Nachricht an die Anwendung:

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

Dabei ist ENTITLEMENT_ID eine von Cloud Marketplace erstellte ID. Hat das Angebot eine bestimmte Dauer, wird diese in Jahren und Monate. Wenn für das Angebot anstelle einer Dauer ein Enddatum angegeben ist, wird im Feld gibt an, dass die Dauer leer ist.

Aktualisieren Sie in Ihrem System das Konto des Nutzers, um anzuzeigen, dass er ein Abo erworben hat. Senden Sie zum Genehmigen der Berechtigung eine HTTP POST-Anfrage an die Partnerbeschaffungs-API und senden Sie die ENTITLEMENT_ID, die Sie genehmigen:

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

Wenn Sie eine Berechtigung ablehnen möchten, verwenden Sie stattdessen die Methode reject in Ihrer HTTP POST-Anfrage:

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

Wenn Sie im Anfragetext einen Grund für die Ablehnung der Berechtigung angeben möchten, verwenden Sie die Methode folgendes Format:

{
  "reason": "..."
}

Berechtigungsplan ändern

Je nachdem, wie Sie Ihr Preismodell eingerichtet haben, können Ihre Kunden gegebenenfalls ein anderes Angebot wählen. Wenn ein Kunde einen neuen Preismodell auswählt, erhalten Sie eine Pub/Sub-Nachricht im folgenden Format:

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

Hat das Angebot eine bestimmte Dauer, wird diese in Jahren und Monate. Wenn für das Angebot anstelle einer Dauer ein Enddatum angegeben ist, wird im Feld gibt an, dass die Dauer leer ist.

Stellen Sie zum Genehmigen des Tarifwechsels die folgende HTTP POST-Anfrage an die Partner-API:

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

Die Antragsstelle muss den Tarif haben, der genehmigt wird:

{
  "pendingPlanName": PLAN_NAME
}

Nachdem der Wechsel genehmigt wurde, erhalten Sie eine weitere Pub/Sub-Nachricht, wenn der Wechsel wirksam wird. In der Nachricht ändert sich das Feld eventType in ENTITLEMENT_PLAN_CHANGED. Stellen Sie zum Prüfen des Status eines Tarifs die folgende HTTP GET-Anfrage an die Partnerbeschaffungs-API.

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

Die Antwort ähnelt der folgenden: Das Feld state gibt an, ob der neue Tarif aktiv ist oder ob der Tarifwechsel noch aussteht.

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

Statusnachricht an Nutzer senden

Wenn die Zeit zwischen der Auswahl eines Preismodells durch den Nutzer und der Genehmigung eine Berechtigung ein paar Stunden oder länger dauert, sollten Sie einen Status Botschaft an die Nutzer. Geben Sie in dieser Nachricht den Fortschritt des Genehmigungsvorgangs an und, falls bekannt, wann dieser voraussichtlich abgeschlossen sein wird.

Stellen Sie zum Bereitstellen einer Statusmeldung die folgende HTTP POST-Anfrage an die Beschaffungs-API:

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

Geben Sie im Anfragetext den Nachrichtentext an, ähnlich dem folgenden Beispiel:

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

Berechtigung kündigen

Wenn ein Nutzer sich entscheidet, seine Berechtigung zu stornieren, erhalten Sie eine Cloud Pub/Sub-Benachrichtigung. Ähnlich wie bei einem Wechsel des Preismodells kann die tatsächliche Stornierung am Ende des aktuellen Abrechnungszyklus wirksam werden.

Die Benachrichtigung hat folgendes Format:

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

Berechtigung löschen

Wenn ein Nutzer eine direkte Anfrage an den Google-Support sendet oder die Google-Plattform verlässt, Berechtigungen werden sofort gekündigt und ihre Berechtigungen und Konten werden nach einem Kulanzzeitraum von 60 Tagen gelöscht. Sie müssen die Daten von Ihren Servern löschen, sobald Sie benachrichtigt wurden, um die Privatsphäre des Nutzers zu schützen.

Wenn die Berechtigungen storniert und das Konto gelöscht wird, erhalten Sie Benachrichtigungen, die den folgenden ähneln:

{
  "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 der Ereignistypen für Kontoaufgaben

Das Folgende ist eine Liste der eventType s, die Ihre Anwendung möglicherweise in Pub/Sub-Nachrichten empfängt:

eventTypeBeschreibung
ACCOUNT_CREATION_REQUESTEDVeraltet
ACCOUNT_ACTIVEZeigt an, dass das Kundenkonto erstellt wurde.
ACCOUNT_DELETEDZeigt an, dass das Kundenkonto aus Google Cloud-Systemen gelöscht wurde.
ENTITLEMENT_CREATION_REQUESTEDZeigt an, dass ein Kunde einen Ihrer Preispläne ausgewählt hat.
ENTITLEMENT_OFFER_ACCEPTEDGibt an, dass ein Angebot von einem Kunden angenommen wurde. Enthält den geplanten Beginn des Angebots, falls vorhanden.
ENTITLEMENT_ACTIVEZeigt an, dass der von einem Kunden ausgewählte Tarif jetzt aktiv ist.
ENTITLEMENT_PLAN_CHANGE_REQUESTEDZeigt an, dass ein Kunde einen neuen Tarif ausgewählt hat.
ENTITLEMENT_PLAN_CHANGEDZeigt an, dass der Tarifwechsel eines Kunden genehmigt wurde und die Änderungen wirksam wurden.
ENTITLEMENT_PLAN_CHANGE_CANCELLEDZeigt an, dass der Tarifwechsel eines Kunden abgebrochen wurde, entweder weil er nicht genehmigt wurde oder weil er zu seinem alten Tarif zurückgekehrt ist.
ENTITLEMENT_PENDING_CANCELLATIONZeigt an, dass ein Kunde seinen Tarif storniert hat und die Stornierung bis zum Ende des Abrechnungszyklus aussteht.
ENTITLEMENT_CANCELLATION_REVERTEDZeigt an, dass die ausstehende Stornierung eines Kunden zurückgesetzt wurde. Beachten Sie, dass Stornierungen nicht mehr rückgängig gemacht werden können, nachdem sie endgültig sind.
ENTITLEMENT_CANCELLEDZeigt an, dass der Tarif eines Kunden storniert wurde.
ENTITLEMENT_CANCELLINGZeigt an, dass der Tarif eines Kunden gerade storniert wird.
ENTITLEMENT_RENEWEDZeigt an, dass die Berechtigung eines Kunden um einen anderen Zeitraum verlängert wurde. Sie müssen nichts unternehmen, um die Verlängerung abzuschließen.
ENTITLEMENT_OFFER_ENDEDZeigt an, dass das private Angebot eines Kunden beendet wurde. Wenn die Berechtigung des Kunden storniert wurde, wird ein separates ENTITLEMENT_CANCELLED-Ereignis ausgelöst. Wenn die Berechtigung des Kunden noch aktiv ist, wird das Abo auf die nicht rabattierten Preise zurückgesetzt.
ENTITLEMENT_DELETEDZeigt an, dass Informationen zum Tarif eines Kunden aus dem Cloud Marketplace gelöscht wurden.

(Für nutzungsbasierte Preise) Nutzung an Google melden

Wenn Sie für Ihr Produkt nutzungsbasierte Preise wählen, müssen Sie die Nutzung Ihrer App an die Service Control API melden.

Eine Einführung zu Service Control finden Sie im Startleitfaden.

Wir empfehlen Ihnen, das Producer Portal zu verwenden, Erstellen Sie ein Dienstkonto im Producer Portal zur Verwendung mit Service Control.

Wenn eine Berechtigung erstellt wird, müssen Sie die Partnerbeschaffungs-API aufrufen, um eine usageReportingId mithilfe der folgenden HTTP GET-Anfrage abzurufen:

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

Die Antwort enthält Informationen zur Berechtigung im folgenden Format:

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

Zum Melden der Nutzung müssen Sie zuerst einen services.check-API-Aufruf ausführen, um die Konfiguration des Dienstes zu prüfen. Wenn das Objekt checkErrors[] leer ist, führen Sie in der Antwort einen API-Aufruf services.report aus, um den Nutzungsbericht zu senden.

Der Nutzungsbericht ist eine Service Control API Operation. Das folgende Beispiel zeigt einen Nutzungsbericht für example-messaging-service, der Informationen über den vom Kunden verwendeten Speicher sendet:

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

wobei

  • operationId ist ein eindeutiger String, den Ihre Dienstinstanz generiert. Sie sollten für Ihre Vorgänge check und report denselben operationId verwenden.

  • consumerId ist mit dem usageReportingId aus der Berechtigung identisch.

  • startTime und endTime stellen die Start- und Endzeit des Gesamtintervalls für den report-Vorgang dar. In den meisten Fällen sollte die startTime eines report-Vorgangs denselben Wert wie die endTime des vorherigen report-Vorgangs haben.

    Wenn der Dienst eines Kunden deaktiviert ist, bevor der startTime eines report-Vorgangs ausgeführt wird, sendet der API-Aufruf services.check einen Fehler im Objekt checkErrors[] und dem Kunden wird nichts für das entsprechende Intervall in Rechnung gestellt.

  • MetricValueSet enthält ein oder Zwischenintervalle und die entsprechenden aktualisierten Messwerte. Sie definieren die Messwerte Ihres Dienstes, wenn Sie Ihr Preismodell auswählen und einreichen.

    Die IDs für Ihre Messwerte können Sie in der Bereich Technische Integration im Producer Portal.

  • userLabels sind von Nutzern erstellte Labels, die als Schlüssel/Wert-Strings definiert werden, die bestimmten Syntaxanforderungen entsprechen. Diese Labels werden an die Cloud Management-Tools zur Kostenverwaltung zur Attribution weitergeleitet. Empfohlene Namenskonventionen finden Sie unter Best Practices für die Verwendung von Labels für Labels.

Wenn die services.check-API einen oder mehrere der folgenden Fehler zurückgibt, empfehlen wir, die Bereitstellung Ihres Dienstes für den Kunden einzustellen, bis der Fehler behoben ist:

  • SERVICE_NOT_ACTIVATED
  • BILLING_DISABLED
  • PROJECT_DELETED

Best Practices für die Nutzungsberichte

Beachten Sie beim Melden der Nutzung, z. B. für den Nutzervorgang oder die Ressourcenauslastung, die folgenden Informationen, damit Ihre Kunden ordnungsgemäß abgerechnet werden können.

Meldung zum Zeitpunkt des Auftretens

Verzögerungen bei der Nutzung des Berichts beeinträchtigen die Kostenverwaltung für Ihre Kunden und werden möglicherweise nicht in den Partnerberichten angezeigt. Dienstanbieter müssen die Nutzung innerhalb einer Stunde nach der Generierung melden.

Wenn Sie mehr Zeit benötigen, um die Nutzung zu melden, wenden Sie sich an Ihren Partnerentwickler.

Nutzung nach der Stornierung einer Berechtigung melden

Wenn Sie eine nicht gemeldete Nutzung haben, nachdem eine Berechtigung storniert wurde, können Sie sie trotzdem mit einem Zeitstempel melden, der die tatsächliche Zeit widerspiegelt, zu der die Nutzung generiert wurde. Der Zeitstempel muss vor der Kündigung der Berechtigung liegen. Melden Sie diese Nutzung innerhalb einer Stunde. Nach Ablauf der Berechtigung dürfen Sie keine Nutzung als neue Nutzung melden.

Berichterstellung am Ende des Monats

Das einstündige Zeitfenster für die Berichterstellung gilt für die Sperrfrist am Monatsende. Um sicherzustellen, dass die Nutzung auf der Rechnung des aktuellen Monats aufgeführt ist, melden Sie die Nutzung am nächsten Tag um 1:00 Uhr, US- und Pacific Time (UTC-7 oder UTC-8).

Geben Sie beispielsweise für eine Rechnung vom September die Nutzung bis zum 1. Oktober, 1:00 Uhr US-amerikanischer und kanadischer Pazifikzeit (UTC-7 oder UTC-8) an.

Wenn die Nutzung später am Tag gemeldet wird, ist sie möglicherweise nicht in der Rechnung für den aktuellen Monat enthalten.

Korrektur von Kundenaktionen, die die Nutzung melden

Wenn Sie keine Nutzung melden können oder den Dienst oder die Abrechnung für einen längeren Zeitraum deaktiviert haben, empfehlen wir Ihnen, dem Kunden einen Kulanzzeitraum zur Wiederherstellung des Dienstes bereitzustellen. Wir empfehlen, 30 Tage nicht zu überschreiten. Während dieses Kulanzzeitraums sollten Sie Folgendes tun:

  • Verschlechtern Sie den bereitgestellten Dienst. Stellen Sie beispielsweise den Kunden auf eine kostenlose Stufe um oder beginnen Sie, Anrufe abzulehnen.

  • Sammeln Sie weiterhin das Nutzungslog, während der Dienst deaktiviert ist. Wir empfehlen, die Nutzung mit der Gebührenaufschlüsselung in einem Zeitraum von höchstens einer Stunde zu erfassen, sodass sie nach der Aktivierung des Dienstes noch einmal wiedergegeben werden kann.

Wenn der Dienst aktiviert ist, müssen Sie die während der Deaktivierung des Dienstes erfasste Nutzung mit dem Zeitpunkt der Erfassung der Daten melden. Sie müssen außerdem Ihre normale Nutzungsberichte fortsetzen.

Wenn bei Kubernetes-Anwendungen Nutzungsberichte beim Start der Anwendung fehlschlagen, empfehlen wir, dass Ihre Anwendung sich selbst beendet, damit Ihre Kunden sofortiges Feedback erhalten und das Problem beheben können.

Best Practices für die Verwendung von Labels

Bei nutzungsbasierten SaaS-Produkten wird die Nutzung einem einzelnen Projekt zugeordnet die im Feld usageReportingId angegeben wurden. In einigen Szenarien wird ein SaaS-Produkt allgemein genutzt. in der Organisation eines Kunden verwendet und in vielen Kundenprojekten verwendet werden. Bis Unterstützung für eine spezifischere Kostenzuordnung aktivieren, empfehlen wir, dass nutzungsbasierte SaaS-Produkte enthalten das optionale Feld userLabels im Nutzungsbericht operation ändern.

Wenn Ihr Dienst nativ ein Konzept von Ressourcenlabels unterstützt, empfehlen wir, diese Labels in Ihren Nutzungsberichten weiterzuleiten. Labels müssen den Syntaxanforderungen.

Cloud Marketplace reserviert die folgenden Labels. Sie können diese Labels verwenden, um zusätzlichen Kontext für die Nutzung innerhalb Ihrer nativen Dienstplattform zu ermitteln. Mi. empfehlen, diese Labels standardmäßig in Ihre Nutzungsberichte aufzunehmen.

LabelschlüsselLabelwertBeschreibung>
cloudmarketplace.googleapis.com/resource_name USER_SUPPLIED Der Name der Ressource, die einem Nutzungsmesswert zugeordnet ist.
cloudmarketplace.googleapis.com/container_name USER_SUPPLIED Der Name eines Ressourcencontainers.

Labels werden an die Cloud Billing-Kostenverwaltung weitergeleitet wie Kostenberichte und Abrechnungsexporte.

Beispiel für die Verwendung von Labels zur Nutzung

Stellen Sie sich für dieses Beispiel vor, Ihre Organisation bietet ein Speicherprodukt namens SaaS-Speicherlösungen.

Der Kunde Carl hat Ihr Speicherplatzangebot für seine Google Cloud-Projekt e-commerce-website, zum Hosten von user_profiles_db und products_db-Datenbanken für ihre E-Commerce-Website:

  • user_profiles_db enthält Informationen zu Nutzern, die Carls Website besuchen.
  • products_db enthält Informationen zu Produkten, die Carl auf seinem Website.

Wenn Sie Carl eine detaillierte Kostenaufschlüsselung der Nutzung zur Verfügung stellen möchten, können Sie Verwenden Sie das Schlüssel/Wert-Paar userLabels, um die Nutzungskosten für jedes separat zu verwalten.

Beispielsweise können Sie die Kosten melden, die Karls products_db-Speicher zugeordnet werden. können Sie den folgenden Bericht senden, der angibt, products_db Speicher kostet sie 100 Einheiten:

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 diesem Beispiel ist service_name die Projekt-ID von Carls Google Cloud Projekt arbeiten.

Ein ausführlicheres Beispiel für die Verwendung von userLabels finden Sie in der SaaS-Codelab.

(Optional) Berichte in Virtual Private Cloud (VPC) einbinden

Wenn Sie Virtual Private Cloud (VPC) in der Umgebung in die der Dienst Ihres Produkts ausführt, müssen Sie die folgenden Schritte ausführen, Google Cloud Marketplace-Berichte in VPC integrieren. Standardmäßig enthält der Parameter Compute Engine-VMs in Ihrer VPC können nur intern kommunizieren. Sie müssen eine der VMs für die externe Kommunikation konfigurieren, damit der Rest können die VMs in Ihrer VPC sie für die Berichterstellung verwenden.

Hinweise

Privater Google-Zugriff einrichten

Kommunikation der virtuellen Compute Engine-Maschinen (VMs) Ihres Produkts ermöglichen extern für die Berichterstellung verwenden, müssen Sie Privater Google-Zugriff: Weitere Informationen zum Konfigurieren des privater Google-Zugriff finden Sie unter Privaten Google-Zugriff konfigurieren

  1. Privaten Google-Zugriff aktivieren für Ihre Dienstumgebung.

  2. DNS konfigurieren, um Klären von Anfragen an private.googleapis.com.

  3. Erstellen Sie eine benutzerdefinierte Route für Google APIs:

    • Geben Sie im Feld Name route-google-apis-services ein.

    • Wählen Sie als Netzwerk Ihre VPC aus.

    • Geben Sie für Ziel-IP-Bereich 199.36.153.8/30 an.

    • Geben Sie unter Priority (Priorität) den Wert 0 an.

    • Geben Sie unter Instanztags den Wert google-apis-services an.

    • Wählen Sie für Nächster Hop die Option Standard-Internetgateway aus.

  4. VPC-Firewallregel erstellen damit Ihr Produkt mit Google APIs kommunizieren kann:

    • Geben Sie im Feld Name google-apis-services ein.

    • Geben Sie unter Beschreibung den Wert Allow egress traffic to Google APIs and services an.

    • Aktivieren Sie das Logging von Firewallregeln.

    • Wählen Sie als Netzwerk Ihre VPC aus.

    • Wählen Sie unter Traffic-Richtung Ausgehend aus.

    • Wählen Sie für Aktion bei Übereinstimmung die Option Zulassen aus.

    • Geben Sie im Feld Name google-apis-services ein.

    • Wählen Sie für Ziele den Wert Specified target tags und anschließend für das Ziel Tags, geben Sie google-apis-services an.

    • Wählen Sie als Zielfilter die Option IPv4 ranges aus. Ziel-IPv4-Bereiche: Geben Sie 199.36.153.8/30 an.

    • Wählen Sie für Protokolle und Ports die Option Allow all aus.

  5. Wählen Sie in der Google Cloud Console die VM aus, die Sie für Berichte zu Ihrem die Nutzung des Produkts. Fügen Sie unter Netzwerk-Tags google-apis-services hinzu. Klicken Sie auf SPEICHERN.

  6. Suchen Sie unter Netzwerkschnittstellen das VPC-Netzwerk. .

  7. Klicken Sie in der Spalte Subnetzwerk auf den Subnetzlink. Über das Subnetz Details klicken Sie auf BEARBEITEN und setzen Sie den privaten Google-Zugriff auf An:

  8. Klicken Sie auf SPEICHERN.

(Optional) Berichte in VPC Service Controls einbinden

Wenn Sie VPC Service Controls in der in der der Dienst Ihres Produkts ausgeführt wird, müssen Sie So binden Sie Google Cloud Marketplace-Berichte in VPC Service Controls ein:

  1. Bevorzugte Implementierung von VPC Service Controls in Ihrem Dienst einrichten zu verbessern. Weitere Informationen zum Einrichten von VPC Service Controls finden Sie unter Dienstperimeter mithilfe von VPC Service Controls einrichten

  2. Achten Sie darauf, dass der servicecontrol.googleapis.com-Dienst in Ihrem ist die Implementierung von VPC Service Controls nicht eingeschränkt.