In diesem Abschnitt werden die Schritte zum Einbinden des Back-Ends Ihrer Anwendung in Cloud Marketplace beschrieben. Mit dieser Integration können Sie die Nutzerkonten und Berechtigungen verwalten, die darauf hinweisen, dass Nutzer Ihr Produkt über Cloud Marketplace gekauft haben. 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 Einbindung einer einfachen Anwendung in Cloud Marketplace und eine Schritt-für-Schritt-Anleitung für den Beispielcode finden Sie im Codelab zum Einbinden eines verwalteten Dienstes.
Den im Codelab verwendeten Beispielcode finden Sie im GitHub-Repository.
Hinweise
- 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. Ihre Anwendung verwendet dieses Dienstkonto, um mit den Cloud Marketplace Partner APIs zu interagieren und Informationen zu Käufen von Nutzern abzurufen.
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 Back-End Ihrer App zu integrieren
Wenn Sie von einem Standort aus auf alle Informationen zugreifen möchten, die Sie zum Einbinden des Back-Ends Ihrer App in Cloud Marketplace benötigen, z. B. auf Ihre Dienstkonten und Tarifkennungen, können Sie den Bereich Abrechnungsintegration im Producer Portal verwenden.
Der Link zu Producer Portal lautet:
https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID
So greifen Sie auf den Bereich Abrechnungsintegration zu:
Klicken Sie in der Produktliste auf den Namen des Produkts.
Wechseln Sie auf der Seite Übersicht des Produkts zum Abschnitt Technische Integration und klicken Sie auf Abrechnungsintegration.
Dienstkonten im Producer Portal erstellen und verknüpfen
Im Bereich Abrechnungsintegration des Producer Portal können Sie Dienstkonten erstellen und verknüpfen, die Sie für die Interaktion mit den Partner APIs verwenden, und um Informationen zu Käufen von Nutzern zu erhalten.
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 Namen des Dienstkontos im Feld Name des Dienstkontos und die ID des Dienstkontos in das Feld Dienstkonto-ID ein. Klicken Sie dann auf Erstellen und verknüpfen.
So verknüpfen Sie Ihre Dienstkonten:
Klicken Sie in der Produktliste auf den Namen des Produkts.
Wechseln Sie auf der Seite Übersicht des Produkts zum Abschnitt Technische Integration und klicken Sie auf Abrechnungsintegration.
Klicken Sie für die Einbindung in die Partner Procurement API unter Dienstkonto zum Aufrufen der Procurement API verknüpfen auf Dienstkonto hinzufügen. Sie können ein vorhandenes Dienstkonto in das Feld eingeben oder ein neues Dienstkonto erstellen.
Klicken Sie für die Einbindung in Pub/Sub unter Dienstkonto verknüpfen, um Pub/Sub-Thema zu abonnieren auf Dienstkonto hinzufügen. Sie können ein vorhandenes Dienstkonto in das Feld eingeben oder ein neues Dienstkonto erstellen.
Klicken Sie für die Einbindung in die Service Control API unter
roles/servicemanagement.serviceController
zu einem Dienstkonto hinzufügen auf Dienstkonto hinzufügen. 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:
Ein Nutzer stellt eine Anfrage oder Änderung in Cloud Marketplace vor, z. B. die Registrierung für Ihr Produkt.
Cloud Marketplace sendet Ihrer Anwendung über Pub/Sub eine Benachrichtigung mit Informationen zur Anfrage im Feld
eventType
. Wenn ein Nutzer beispielsweise seine Berechtigung ändert, isteventType
ENTITLEMENT_PLAN_CHANGED
.Siehe die vollständige Liste der möglichen
eventType
s.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 eine Kontoressource, die die Beziehung des Nutzers zu Ihnen aufzeichnet. 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 von Cloud Marketplace erstellte Konto-ID und YOUR_PARTNER_ID eine ID, die Ihnen zugewiesen wird, wenn Ihr Partnerentwickler den Zugriff auf die Partner Procurement API aktiviert.
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.
Nutzerkonten 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 eine Berechtigung, die besagt, dass der Kunde Ihr Produkt im Cloud Marketplace gekauft hat. 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 zur Verwaltung von Berechtigungen findest du in der Referenzdokumentation.
Berechtigung genehmigen oder ablehnen
Wenn ein Kunde ein Preismodell auswählt, erstellt Cloud Marketplace eine Berechtigung und sendet die folgende Pub/Sub-Nachricht an Ihre 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 vom Cloud Marketplace erstellte ID. Wenn das Angebot eine festgelegte Dauer hat, wird diese Dauer in Jahren und Monaten angegeben. Wenn für das Angebot anstelle einer Dauer ein Enddatum angegeben ist, ist das Feld mit der Dauer leer.
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
Verwende das folgende Format, um im Anfragetext einen Grund für die Ablehnung der Berechtigung anzugeben:
{ "reason": "..." }
Berechtigungstarif ä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 }, }
Wenn das Angebot eine festgelegte Dauer hat, wird diese Dauer in Jahren und Monaten angegeben. Wenn für das Angebot anstelle einer Dauer ein Enddatum angegeben ist, ist das Feld mit der Dauer leer.
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 der Zeitraum zwischen der Auswahl eines Preismodells durch den Nutzer und der Genehmigung einer Berechtigung durch das Back-End einige Stunden oder länger beträgt, empfehlen wir, dem Nutzer eine Statusmeldung zu senden. 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 stornieren
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", "cancellationDate": "...", "updateTime": "..." }, }
Berechtigung löschen
Wenn ein Nutzer eine direkte Anfrage an den Google-Support stellt oder die Google-Plattform verlässt, werden seine Berechtigungen sofort widerrufen und seine 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:
eventType | Beschreibung |
---|---|
ACCOUNT_CREATION_REQUESTED | Eingestellte Funktionen |
ACCOUNT_ACTIVE | Zeigt an, dass das Kundenkonto erstellt wurde. |
ACCOUNT_DELETED | Zeigt an, dass das Kundenkonto aus Google Cloud-Systemen gelöscht wurde. |
ENTITLEMENT_CREATION_REQUESTED | Zeigt an, dass ein Kunde einen Ihrer Preispläne ausgewählt hat. |
ENTITLEMENT_OFFER_ACCEPTED | Gibt an, dass ein Angebot von einem Kunden angenommen wurde. Enthält die geplante Startzeit des Angebots, falls vorhanden. |
ENTITLEMENT_ACTIVE | Zeigt an, dass der von einem Kunden ausgewählte Tarif jetzt aktiv ist. |
ENTITLEMENT_PLAN_CHANGE_REQUESTED | Zeigt an, dass ein Kunde einen neuen Tarif ausgewählt hat. |
ENTITLEMENT_PLAN_CHANGED | Zeigt an, dass der Tarifwechsel eines Kunden genehmigt wurde und die Änderungen wirksam wurden. |
ENTITLEMENT_PLAN_CHANGE_CANCELLED | Zeigt 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_CANCELLATION | Zeigt an, dass ein Kunde seinen Tarif storniert hat und die Stornierung bis zum Ende des Abrechnungszyklus aussteht. |
ENTITLEMENT_CANCELLATION_REVERTED | Zeigt 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_CANCELLED | Zeigt an, dass der Tarif eines Kunden storniert wurde. |
ENTITLEMENT_CANCELLING | Zeigt an, dass der Tarif eines Kunden gerade storniert wird. |
ENTITLEMENT_RENEWED | Zeigt 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_ENDED | Zeigt 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_DELETED | Gibt 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 die Verwendung des Producer Portals, um für die Verwendung mit Service Control ein Dienstkonto im Producer Portal zu erstellen.
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" } }] }
Dabei gilt:
operationId
ist ein eindeutiger String, den Ihre Dienstinstanz generiert. Sie sollten für Ihre Vorgängecheck
undreport
denselbenoperationId
verwenden.consumerId
ist mit demusageReportingId
aus der Berechtigung identisch.startTime
undendTime
stellen die Start- und Endzeit des Gesamtintervalls für denreport
-Vorgang dar. In den meisten Fällen sollte diestartTime
einesreport
-Vorgangs denselben Wert wie dieendTime
des vorherigenreport
-Vorgangs haben.Wenn der Dienst eines Kunden deaktiviert ist, bevor der
startTime
einesreport
-Vorgangs ausgeführt wird, sendet der API-Aufrufservices.check
einen Fehler im ObjektcheckErrors[]
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 im Abschnitt Technische Integration im Producer Portal aufrufen und referenzieren.
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, das im Feld usageReportingId
angegeben ist.
In einigen Szenarien kann ein SaaS-Produkt in der Organisation eines Kunden allgemein genutzt und in vielen Kundenprojekten verwendet werden. Damit eine spezifischere Kostenzuordnung unterstützt wird, empfehlen wir, dass nutzungsbasierte SaaS-Produkte das optionale Feld userLabels
im Vorgang des Nutzungsberichts enthalten.
Wenn Ihr Dienst nativ ein Konzept von Ressourcenlabels unterstützt, empfehlen wir, diese Labels in Ihren Nutzungsberichten weiterzuleiten. Labels müssen den Syntaxanforderungen entsprechen.
Cloud Marketplace reserviert die folgenden Labels. Mit diesen Labels können Sie zusätzlichen Kontext für die Nutzung in Ihrer nativen Dienstplattform ermitteln. Wir empfehlen, diese Labels standardmäßig in Ihre Nutzungsberichte aufzunehmen.
Labelschlüssel | Labelwert | Beschreibung> |
---|---|---|
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 Cloud Billing-Kostenverwaltungstools weitergeleitet, einschließlich Kostenberichten und Abrechnungsexporten.
Beispiel für die Verwendung von Nutzungslabels
Stellen Sie sich für dieses Beispiel vor, Ihre Organisation bietet ein Speicherprodukt namens SaaS-Speicherlösungen an.
Ein Kunde, Carl, hat Ihr Speicherangebot für sein Google Cloud-Projekt e-commerce-website
erworben, um die user_profiles_db
- und products_db
-Datenbanken für seine E-Commerce-Website zu hosten:
user_profiles_db
enthält Informationen über Nutzer, die die Website von Carl besuchen.products_db
enthält Informationen zu Produkten, die Carl auf seiner Website verkauft.
Wenn Sie Carl eine detaillierte Kostenaufschlüsselung für die Nutzung zur Verfügung stellen möchten, können Sie mit dem Schlüssel/Wert-Paar userLabels
die Nutzungskosten für jede Datenbank separat melden.
Wenn Sie beispielsweise die Kosten melden möchten, die Karls products_db
-Speichernutzung zugeordnet werden, können Sie den folgenden Bericht senden, aus dem hervorgeht, dass der products_db
-Speicher von Carl 100 Einheiten gekostet hat:
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.
Ein ausführlicheres Beispiel für die Verwendung von userLabels
finden Sie im SaaS-Codelab.
(Optional) Berichte in Virtual Private Cloud (VPC) einbinden
Wenn Sie Virtual Private Cloud (VPC) in der Umgebung verwenden möchten, in der der Dienst Ihres Produkts ausgeführt wird, müssen Sie die folgenden Schritte ausführen, um die Berichterstellung von Google Cloud Marketplace in die VPC zu integrieren. Standardmäßig können die Compute Engine-VMs in Ihrer VPC nur intern kommunizieren. Sie müssen eine der VMs für die externe Kommunikation konfigurieren, damit die restlichen VMs in Ihrer VPC sie für die Berichterstellung verwenden können.
Hinweise
Richten Sie Ihre bevorzugte Implementierung der VPC in Ihrer Dienstumgebung ein. Eine Anleitung zum Einrichten einer VPC finden Sie unter VPC-Netzwerke (Virtual Private Cloud) erstellen und ändern.
Achten Sie darauf, dass Sie die IAM-Rolle Compute Network Admin (
roles/compute.NetworkAdmin
) für Identity and Access Management für Ihr Google Cloud-Projekt haben.
Privater Google-Zugriff einrichten
Damit die virtuellen Compute Engine-Maschinen (VMs) Ihres Produkts zu Berichtszwecken extern kommunizieren können, müssen Sie den privaten Google-Zugriff einrichten. Weitere Informationen zum Konfigurieren des privater Google-Zugriff finden Sie unter Privaten Google-Zugriff konfigurieren.
Aktivieren Sie den privaten Google-Zugriff für Ihre Dienstumgebung.
Konfigurieren Sie das DNS, um Anfragen an
private.googleapis.com
aufzulösen.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
199.36.153.8/30
für Ziel-IP-Bereich an.Geben Sie unter Priority (Priorität) den Wert
0
an.Geben Sie für Instanztags
google-apis-services
an.Wählen Sie für Nächster Hop die Option Standard-Internetgateway aus.
Erstellen Sie eine VPC-Firewallregel, damit Ihr Produkt mit Google APIs kommunizieren kann:
Geben Sie im Feld Name
google-apis-services
ein.Geben Sie
Allow egress traffic to Google APIs and services
als Beschreibung 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 unter Ziele die Option
Specified target tags
aus und geben Sie dann für Ziel-Tagsgoogle-apis-services
an.Wählen Sie
IPv4 ranges
als Zielfilter aus und geben Sie199.36.153.8/30
für Ziel-IPv4-Bereiche an.Wählen Sie für Protokolle und Ports die Option
Allow all
aus.
Wählen Sie in der Google Cloud Console die VM aus, mit der Sie die Nutzung Ihres Produkts melden möchten. Fügen Sie unter Netzwerk-Tags
google-apis-services
hinzu und klicken Sie auf SPEICHERN.Suchen Sie unter Netzwerkschnittstellen die Netzwerkschnittstelle Ihrer VPC.
Klicken Sie in der Spalte Subnetzwerk auf den Subnetzlink. Klicken Sie auf der Seite Subnetzdetails auf BEARBEITEN und setzen Sie Privater Google-Zugriff auf An.
Klicken Sie auf SPEICHERN.
(Optional) Berichterstellung in VPC Service Controls einbinden
Wenn Sie VPC Service Controls in der Umgebung verwenden möchten, in der der Dienst Ihres Produkts ausgeführt wird, müssen Sie die folgenden Schritte ausführen, um Google Cloud Marketplace-Berichte in VPC Service Controls einzubinden:
Richten Sie Ihre bevorzugte Implementierung von VPC Service Controls in Ihrer Dienstumgebung ein. Weitere Informationen zum Einrichten von VPC Service Controls finden Sie unter Dienstperimeter mit VPC Service Controls einrichten.
Achten Sie darauf, dass der Dienst
servicecontrol.googleapis.com
in Ihrer Implementierung von VPC Service Controls nicht eingeschränkt ist.