In diesem Dokument wird beschrieben, wie Sie ein Push-Abo erstellen. Sie können ein Push-Abo mit derTrusted Cloud -Konsole, der Google Cloud CLI, der Clientbibliothek oder der Pub/Sub API erstellen.
Hinweise
Erforderliche Rollen und Berechtigungen
Wenn Sie ein Abo erstellen möchten, müssen Sie die Zugriffssteuerung auf Projektebene konfigurieren. Sie benötigen auch Berechtigungen auf Ressourcenebene, wenn sich Ihre Abos und Themen in verschiedenen Projekten befinden, wie später in diesem Abschnitt erläutert.
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Pub/Sub-Bearbeiter (roles/pubsub.editor
) für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen von Push-Abos benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Erstellen von Push-Abos erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Erstellen von Push-Abos erforderlich:
-
Abo erstellen:
pubsub.subscriptions.create
-
Abo löschen:
pubsub.subscriptions.delete
-
Abo abschließen:
pubsub.subscriptions.get
-
Abo auflisten:
pubsub.subscriptions.list
-
Abo aktualisieren:
pubsub.subscriptions.update
-
So hängen Sie ein Abo an ein Thema an:
pubsub.topics.attachSubscription
-
IAM-Richtlinie für ein Abo abrufen:
pubsub.subscriptions.getIamPolicy
-
Konfigurieren Sie die IAM-Richtlinie für ein Abo:
pubsub.subscriptions.setIamPolicy
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Wenn Sie Push-Abos in einem Projekt erstellen müssen, die einem Thema in einem anderen Projekt zugeordnet sind, bitten Sie Ihren Themenadministrator, Ihnen auch die IAM-Rolle „Pub/Sub Editor“ ((roles/pubsub.editor)
) für das Thema zu gewähren.
Attribute für Push-Abos
Wenn Sie ein Push-Abo konfigurieren, können Sie die folgenden Eigenschaften angeben.
Allgemeine Eigenschaften
Weitere Informationen zu den allgemeinen Abo-Eigenschaften, die Sie für alle Abos festlegen können.
Endpunkte
Endpunkt-URL (erforderlich): Eine öffentlich zugängliche HTTPS-Adresse. Der Server für den Push-Endpunkt muss ein gültiges SSL-Zertifikat haben, das von einer Zertifizierungsstelle signiert wurde. Der Pub/Sub-Dienst sendet Nachrichten an Push-Endpunkte aus derselben Trusted Cloud Region, in der der Pub/Sub-Dienst die Nachrichten speichert. Der Pub/Sub-Dienst sendet Nachrichten aus derselben Trusted Cloud Region auf Best-Effort-Basis.
Wenn Abonnenten eine Firewall verwenden, können sie keine Push-Anfragen empfangen. Um Push-Anfragen zu erhalten, müssen Sie die Firewall deaktivieren und das in der Anfrage verwendete JSON Web Token (JWT) prüfen. Wenn ein Abonnent eine Firewall hat, erhalten Sie möglicherweise den Fehler
403 permission denied
.Für Pub/Sub ist kein Eigentumsnachweis für Domains für Push-Abos mehr erforderlich. Wenn Ihre Domain unerwartete POST-Anfragen von Pub/Sub erhält, können Sie einen mutmaßlichen Missbrauch melden.
Authentifizierung
Authentifizierung aktivieren Wenn diese Option aktiviert ist, enthalten Nachrichten, die von Pub/Sub an den Push-Endpunkt gesendet werden, einen Autorisierungsheader, über den der Endpunkt die Anfrage authentifizieren kann. Für App Engine Standard- und Cloud Run Functions-Endpunkte, die im selben Projekt wie das Abo gehostet werden, sind automatische Authentifizierungs- und Autorisierungsmechanismen verfügbar.
Die Authentifizierungskonfiguration für ein authentifiziertes Push-Abo besteht aus einem nutzerverwalteten Dienstkonto und den Zielgruppenparametern, die in einem create-, patch- oder ModifyPushConfig-Aufruf angegeben werden. Außerdem müssen Sie einem Dienstkonto eine bestimmte Rolle zuweisen, wie im nächsten Abschnitt beschrieben.
Zielgruppe Ein einzelner String ohne Berücksichtigung der Groß- und Kleinschreibung, mit dem der Webhook die beabsichtigte Zielgruppe dieses bestimmten Tokens überprüfen kann.
Dienstkonto Pub/Sub erstellt automatisch ein Dienstkonto für Sie im Format
service-{PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com
.
Voraussetzungen für die Aktivierung der Authentifizierung
Das nutzerverwaltete Dienstkonto ist das Dienstkonto, das dem Push-Abo zugeordnet ist. Dieses Konto wird als email
-Anspruch des generierten JSON-Web-Tokens (JWT) verwendet. Hier finden Sie eine Liste der Anforderungen an das Dienstkonto:
Dieses nutzerverwaltete Dienstkonto muss sich im selben Projekt wie das Push-Abo befinden.
Das Hauptkonto, das das Push-Abo erstellt oder ändert, muss die Berechtigung
iam.serviceAccounts.actAs
für das vom Nutzer verwaltete Dienstkonto haben, um das Dienstkonto an das Push-Abo anzuhängen. Weitere Informationen finden Sie unter Dienstkonten an Ressourcen anhängen.Erforderliche Berechtigungen: Diesem Dienstkonto muss die Berechtigung
iam.serviceAccounts.getOpenIdToken
(in der Rolleroles/iam.serviceAccountTokenCreator
enthalten) gewährt werden, damit Pub/Sub JWT-Tokens für das angegebene Dienstkonto erstellen kann, um Push-Anfragen zu authentifizieren.
Entpacken der Nutzlast
Mit der Option Entpacken der Nutzlast aktivieren werden alle Metadaten aus Pub/Sub-Nachrichten entfernt, mit Ausnahme der Nachrichtendaten. Beim Entpacken der Nutzlast werden die Nachrichtendaten direkt als HTTP-Body bereitgestellt.
Sie können auch die Option Metadaten schreiben aktivieren. Mit der Option Metadaten schreiben werden zuvor entfernte Nachrichtenmetadaten wieder in den Anfrageheader eingefügt.
Zustellung an private VPC-Adressen
Pub/Sub wird außerhalb von VPC-Netzwerken ausgeführt und kann Nachrichten nicht direkt an private VPC-Adressen senden. Sie können jedoch Eventarc verwenden, um Nachrichten an Dienste in Ihrer VPC weiterzuleiten. Pub/Sub kann Nachrichten an einen Eventarc-Trigger senden, der sie dann an einen Dienst in Ihrer VPC weiterleiten kann, z. B. an einen Cloud Run-Dienst oder eine Workflows-Ausführung. Weitere Informationen finden Sie in der Eventarc-Dokumentation.
VPC Service Controls
Für ein Projekt, das durch VPC Service Controls geschützt ist, gelten die folgenden Einschränkungen für Push-Abos:
Sie können nur neue Push-Abos erstellen, für die der Push-Endpunkt auf einen Cloud Run-Dienst mit einer standardmäßigen
run.app
-URL oder auf eine Workflows-Ausführung festgelegt ist. Benutzerdefinierte Domains funktionieren nicht.Wenn Sie Ereignisse über Eventarc an Workflows-Ziele weiterleiten, für die der Push-Endpunkt auf eine Workflows-Ausführung festgelegt ist, können Sie neue Push-Abos nur über Eventarc erstellen.
Vorhandene Push-Abos können nicht aktualisiert werden. Diese Push-Abos funktionieren weiterhin, obwohl sie nicht durch VPC Service Controls geschützt werden.
Push-Abo erstellen
Die folgenden Beispiele zeigen, wie Sie ein Abo mit Push-Zustellung mit den bereitgestellten Standardeinstellungen erstellen.
Standardmäßig verwenden Abos die Pull-Zustellung, sofern Sie nicht explizit eine Push-Konfiguration festlegen, wie in den folgenden Beispielen gezeigt.
Console
So erstellen Sie ein Push-Abo:
- Rufen Sie in der Trusted Cloud Console die Seite Abos auf.
- Klicken Sie auf Abo erstellen.
- Geben Sie im Feld Abo-ID einen Namen ein.
Informationen zum Benennen eines Abos finden Sie unter Richtlinien für die Benennung eines Themas oder Abos.
- Wählen Sie im Drop-down-Menü ein Thema aus oder erstellen Sie ein Thema. Das Abo erhält Nachrichten aus dem Thema.
- Wählen Sie als Zustellungstyp Push aus.
- Geben Sie eine Endpunkt-URL an.
- Behalten Sie alle anderen Standardwerte bei.
- Klicken Sie auf Erstellen.
Sie können ein Abo auch im Abschnitt Themen erstellen. Diese Verknüpfung ist nützlich, um Themen mit Abos zu verknüpfen.
- Rufen Sie in der Trusted Cloud Console die Seite Themen auf.
- Klicken Sie neben dem Thema, für das Sie ein Abo erstellen möchten, auf more_vert.
- Wählen Sie im Kontextmenü Abo erstellen aus.
- Geben Sie die Abo-ID ein.
Informationen zum Benennen eines Abos finden Sie unter Richtlinien für die Benennung eines Themas oder Abos.
- Wählen Sie als Zustellungstyp Push aus.
- Geben Sie eine Endpunkt-URL an.
- Behalten Sie alle anderen Standardwerte bei.
- Klicken Sie auf Erstellen.
gcloud
-
In the Trusted Cloud console, activate Cloud Shell.
At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
Führen Sie den Befehl
gcloud pubsub subscriptions create
aus, um ein Push-Abo zu erstellen.gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --push-endpoint=PUSH_ENDPOINT
Ersetzen Sie Folgendes:
SUBSCRIPTION_ID
: Der Name oder die ID Ihres neuen Push-Abos.TOPIC_ID
: Der Name oder die ID Ihres Themas.- PUSH_ENDPOINT: Die URL, die als Endpunkt für dieses Abo verwendet werden soll.
Beispiel:
https://myproject.appspot.com/myhandler
.
- PROJECT_ID ist die Projekt-ID.
- SUBSCRIPTION_ID ist Ihre Abo-ID.
- TOPIC_ID ist Ihre Themen-ID.
- PUSH_ENDPOINT ist eine URL, die als Endpunkt verwendet werden soll. Beispiel:
https://myproject.appspot.com/myhandler
.
REST
Verwenden Sie zum Erstellen eines Push-Abos die Methode projects.subscriptions.create
:
Anfrage:
Die Anfrage muss mit einem Zugriffstoken im Header Authorization
authentifiziert werden. Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen abrufen: gcloud auth application-default print-access-token
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID Authorization: Bearer ACCESS_TOKEN
Anfragetext:
{ "topic": "projects/PROJECT_ID/topics/TOPIC_ID", // Only needed if you are using push delivery "pushConfig": { "pushEndpoint": "PUSH_ENDPOINT" } }
Wobei:
Response:
{ "name": "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID", "topic": "projects/PROJECT_ID/topics/TOPIC_ID", "pushConfig": { "pushEndpoint": "https://PROJECT_ID.appspot.com/myhandler", "attributes": { "x-goog-version": "v1" } }, "ackDeadlineSeconds": 10, "messageRetentionDuration": "604800s", "expirationPolicy": { "ttl": "2678400s" } }
C++
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C++ in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C++ API.
C#
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für C# in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub C# API.
Go
Im folgenden Beispiel wird die Hauptversion der Go Pub/Sub-Clientbibliothek (v2) verwendet. Wenn Sie noch die v1-Bibliothek verwenden, finden Sie hier den Migrationsleitfaden für v2. Eine Liste der Codebeispiele für Version 1 finden Sie unter Eingestellte Codebeispiele.
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Go in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Go API.
Java
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Java in der Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Java API.
Node.js
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für PHP in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Node.js API.
Node.ts
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für PHP in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Node.js API.
PHP
Folgen Sie der Einrichtungsanleitung für PHP unter Schnellstart: Clientbibliotheken verwenden, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur PHP-API von Pub/Sub.
Python
Bevor Sie dieses Beispiel testen, folgen Sie der Einrichtungsanleitung für Python in der Schnellstart-Anleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Python API.
Ruby
Im folgenden Beispiel wird die Ruby-Pub/Sub-Clientbibliothek v3 verwendet. Wenn Sie noch die v2-Bibliothek verwenden, finden Sie hier die Migrationsanleitung für v3. Eine Liste der Ruby v2-Codebeispiele finden Sie unter Eingestellte Codebeispiele.
Bevor Sie dieses Beispiel ausprobieren, folgen Sie der Einrichtungsanleitung für Ruby im Schnellstart: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zu Pub/Sub Ruby API.
Push-Abos beobachten
Cloud Monitoring bietet eine Reihe von Messwerten zum Beobachten von Abos.
Eine Liste aller verfügbaren Messwerte für Pub/Sub und deren Beschreibungen finden Sie in der Monitoring-Dokumentation für Pub/Sub.
Sie können Abos auch in Pub/Sub überwachen.
Nächste Schritte
- Erstellen oder ändern Sie ein Abo mit
gcloud
-Befehlen. - Abonnements mit REST APIs erstellen oder ändern