In diesem Dokument wird beschrieben, wie Sie ein Push-Abo erstellen. Sie können die Google Cloud Console, die Google Cloud CLI, die Clientbibliothek oder die Pub/Sub API verwenden, um ein Push-Abo zu erstellen.
Hinweise
- Weitere Informationen zu Abos
- Machen Sie sich mit der Funktionsweise von Push-Abos vertraut.
Erforderliche Rollen und Berechtigungen
Zum Erstellen eines Abos 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. Dies wird weiter unten in diesem Abschnitt erläutert.
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Pub/Sub Editor (roles/pubsub.editor
) für das Projekt zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zum Erstellen von Push-Abos benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff 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
-
Fügen Sie einem Thema ein Abo hinzu:
pubsub.topics.attachSubscription
-
Rufen Sie die IAM-Richtlinie für ein Abo ab:
pubsub.subscriptions.getIamPolicy
-
Konfigurieren Sie die IAM-Richtlinie für ein Abo:
pubsub.subscriptions.setIamPolicy
Möglicherweise können Sie diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Wenn Sie in einem Projekt Push-Abos erstellen müssen, die mit einem Thema in einem anderen Projekt verknüpft sind, bitten Sie Ihren Themenadministrator, Ihnen auch die IAM-Rolle „Pub/Sub-Bearbeiter“ (roles/pubsub.editor)
für das Thema zu gewähren.
Push-Aboeigenschaften
Wenn Sie ein Push-Abo konfigurieren, können Sie die folgenden Attribute festlegen.
Allgemeine Eigenschaften
Weitere Informationen zu allgemeinen Abo-Properties, die du für alle Abos festlegen kannst
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 ist. Der Pub/Sub-Dienst sendet Nachrichten an Push-Endpunkte aus derselben Google Cloud-Region, in der der Pub/Sub-Dienst die Nachrichten speichert. Der Pub/Sub-Dienst sendet Nachrichten aus derselben Google Cloud-Region auf Best-Effort-Basis.
Pub/Sub erfordert für URL-Domains von Push-Abos keinen Nachweis der Inhaberschaft mehr. Wenn Ihre Domain unerwartete POST-Anfragen von Pub/Sub erhält, können Sie verdächtigen Missbrauch melden.
Authentifizierung
Authentifizierung aktivieren. Wenn diese Option aktiviert ist, enthalten Nachrichten, die von Pub/Sub an den Push-Endpunkt gesendet werden, einen Autorisierungsheader, mit dem der Endpunkt die Anfrage authentifizieren kann. Automatische Authentifizierungs- und Autorisierungsmechanismen sind für App Engine Standard- und Cloud Functions-Endpunkte verfügbar, die im selben Projekt wie das Abo gehostet werden.
Die Authentifizierungskonfiguration für ein authentifiziertes Push-Abo besteht aus einem vom Nutzer verwalteten Dienstkonto und den Zielgruppenparametern, die in einem create-, patch- oder ModifyPushConfig-Aufruf angegeben werden. Sie müssen einem Dienst-Agent auch eine bestimmte Rolle zuweisen, wie im nächsten Abschnitt beschrieben.
Nutzerverwaltetes Dienstkonto (erforderlich). Das Dienstkonto, das dem Push-Abo zugeordnet ist. Dieses Konto wird als
email
-Anforderung des generierten JSON-Webtokens (JWT) verwendet. Im Folgenden finden Sie eine Liste der Anforderungen für das Dienstkonto:Dieses 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 Dienstkonto haben. Sie können entweder eine Rolle mit dieser Berechtigung für das Projekt, den Ordner oder die Organisation zuweisen, damit der Aufrufer die Identität mehrerer Dienstkonten übernehmen kann. Alternativ können Sie eine Rolle mit dieser Berechtigung für das Dienstkonto zuweisen, damit der Aufrufer nur die Identität dieses Dienstkontos übernehmen kann.
Zielgruppe: Ein einzelner String ohne Berücksichtigung der Groß- und Kleinschreibung, mit dem der Webhook die beabsichtigte Zielgruppe dieses bestimmten Tokens validiert.
Dienst-Agent (erforderlich).
Pub/Sub erstellt automatisch ein Dienstkonto im Format
service-{PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com
.Diesem Dienst-Agent muss die Berechtigung
iam.serviceAccounts.getOpenIdToken
(in der Rolleroles/iam.serviceAccountTokenCreator
enthalten) gewährt werden, damit Pub/Sub JWT-Tokens für authentifizierte Push-Anfragen erstellen kann.
Entpacken der Nutzlast
Mit der Option Entpacken der Nutzlast aktivieren werden alle Metadaten der Nachrichten mit Ausnahme der Nachrichtendaten aus Pub/Sub-Nachrichten entfernt. Beim Entpacken der Nutzlast werden die Nachrichtendaten direkt als HTTP-Text gesendet.
- Metadaten schreiben Fügt zuvor entfernte Nachrichtenmetadaten wieder in den Anfrageheader ein.
VPC Service Controls
Beachten Sie für ein durch VPC Service Controls geschütztes Projekt 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 Standard-URL vom Typ
run.app
oder einer Workflowausführung festgelegt ist. Benutzerdefinierte Domains funktionieren nicht.Wenn Sie Ereignisse über Eventarc an Workflows-Ziele weiterleiten, für die als Push-Endpunkt 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 sind.
Push-Abo erstellen
Die folgenden Beispiele zeigen, wie Sie ein Abo mit Push-Zustellung unter Verwendung der bereitgestellten Standardeinstellungen erstellen.
Standardmäßig verwenden Abos Pull-Zustellung, es sei denn, Sie legen explizit eine Push-Konfiguration fest, wie in den folgenden Beispielen gezeigt.
Console
So erstellen Sie ein Push-Abo:
- Öffnen Sie in der Google Cloud Console die Seite Abos.
- Klicken Sie auf Abo erstellen.
- Geben Sie im Feld Abo-ID einen Namen ein.
Weitere Informationen zur Benennung von Abos finden Sie unter Richtlinien für die Benennung von Themen 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 Google 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.
Weitere Informationen zur Benennung von Abos finden Sie unter Richtlinien für die Benennung von Themen 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
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung, in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
-
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 des Themas.- PUSH_ENDPOINT: Die URL, die als Endpunkt für dieses Abo 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:
https://myproject.appspot.com/myhandler
.Lösung:
{ "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#
Folgen Sie der Einrichtungsanleitung für C# in der Pub/Sub-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub C# API.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Go
Folgen Sie der Einrichtungsanleitung für Go in der Pub/Sub-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Go API.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Java
Folgen Sie der Einrichtungsanleitung für Java in der Pub/Sub-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Java API.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Node.js
PHP
Folgen Sie der Einrichtungsanleitung für PHP in der Pub/Sub-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub PHP API.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Folgen Sie der Einrichtungsanleitung für Python in der Pub/Sub-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Python API.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Ruby
Folgen Sie der Einrichtungsanleitung für Ruby in der Pub/Sub-Kurzanleitung zur Verwendung von Clientbibliotheken, bevor Sie dieses Beispiel ausprobieren. Weitere Informationen finden Sie in der Referenzdokumentation zur Pub/Sub Ruby API.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Pub/Sub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Nächste Schritte
- Erstellen oder ändern Sie ein Abo mit
gcloud
-Befehlen. - Abo mit REST APIs erstellen oder ändern