Sie können Cloud Run-Dienste und -Funktionen aufrufen, indem Sie einen Pub/Sub-Trigger einrichten.
Beim Konfigurieren des Triggers verknüpfen Sie ihn mit einem bestimmten Pub/Sub-Thema. So wird Ihr Dienst oder Ihre Funktion automatisch aufgerufen, wenn eine Nachricht zu diesem Thema veröffentlicht wird.
Sie haben zwei Möglichkeiten, diesen Trigger zu konfigurieren:
- Direkter Pub/Sub-Trigger (empfohlen): Leiten Sie Nachrichten mit Pub/Sub direkt an Ihren Dienst oder Ihre Funktion weiter. Sie verwalten das Abo direkt und Ihr Dienst oder Ihre Funktion empfängt die Standard-Pub/Sub-Push-Anfrage. Verwenden Sie diese Option, wenn Sie eine einfachere Konfiguration und eine geringere Latenz benötigen.
- Eventarc-basierter Trigger: Pub/Sub-Nachrichten mit Eventarc an Ihren Dienst oder Ihre Funktion weiterleiten. Sie verwalten Pub/Sub-Trigger auf dieselbe Weise wie andere Eventarc-Quellen. Ihr Dienst oder Ihre Funktion empfängt Ereignisse als CloudEvents. Verwenden Sie diese Option, wenn Sie die erweiterten Filter- oder Routingfunktionen von Eventarc benötigen.
Hinweis
Prüfen Sie, ob Sie ein neues Projekt für Cloud Run eingerichtet haben, wie auf der Seite Einrichtung beschrieben.
Aktivieren Sie die Artifact Registry, Cloud Build, Cloud Run Admin API, Cloud Logging und Pub/Sub APIs:
Wenn Sie einen Eventarc-basierten Trigger konfigurieren, müssen Sie auch die Eventarc API aktivieren:
Erforderliche Rollen
Weisen Sie die erforderlichen IAM-Rollen und -Berechtigungen zu. Wenn Sie einen Eventarc-basierten Trigger konfigurieren, finden Sie weitere Informationen unter Erforderliche IAM-Rollen und -Berechtigungen für Eventarc.
Erforderliche Rollen für das Deployer-Konto
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Auslösen von Pub/Sub-Ereignissen benötigen:
- Cloud Run-Administrator (
roles/run.admin) - Zugriffsberechtigter für Logbetrachtung (
roles/logging.viewAccessor) - Projekt-IAM-Administrator (
roles/resourcemanager.projectIamAdmin) - Service Account Admin (
roles/iam.serviceAccountAdmin) - Service Account User (
roles/iam.serviceAccountUser) - Service Usage-Administrator ()
roles/serviceusage.serviceUsageAdmin
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
Beachten Sie, dass Cloud Build-Berechtigungen standardmäßig Berechtigungen zum Hochladen und Herunterladen von Artifact Registry-Artefakten enthalten.
Pub/Sub-Trigger erstellen
Console
Rufen Sie in der Google Cloud Console die Seite Cloud Run-Dienste auf:
Klicken Sie auf den Dienst oder die Funktion, für die Sie einen Pub/Sub-Trigger erstellen möchten.
Wählen Sie den Tab Trigger aus.
Wählen Sie den Tab für die ausgewählte Triggerkonfiguration aus:
Direkt (empfohlen)
- Klicken Sie auf Trigger hinzufügen und wählen Sie Pub/Sub-Trigger > Direkt aus.
- Im Bereich Direktes Pub/Sub-Abo:
- Wählen Sie im Feld Cloud Pub/Sub-Thema das Thema aus, wenn Sie bereits eines erstellt haben, oder klicken Sie auf Neues Thema erstellen, um ein neues Thema zu erstellen.
- Wählen Sie im Feld Dienstkonto das Dienstkonto aus, das das Abo zum Aufrufen Ihres Dienstes verwendet. Wenn in der Console fehlende Rollen aufgeführt sind, klicken Sie auf Alle gewähren.
- Geben Sie für den Dienst-URL-Pfad den Pfad in Ihrem Dienst ein, der Nachrichten empfangen soll, z. B.
/(Standard) oder/pubsub. Die Console fügt diesen Pfad der URL Ihres Dienstes hinzu.
- Klicken Sie auf Speichern.
Eventarc
Ändern Sie im Bereich Eventarc-Trigger die Triggerdetails so:
Geben Sie im Feld Triggername einen Namen für den Trigger ein oder verwenden Sie den Standardnamen.
Wählen Sie einen Triggertyp aus der Liste aus:
Google-Quellen, um Trigger für Pub/Sub, Cloud Storage, Firestore und andere Google-Ereignisanbieter anzugeben.
Drittanbieter, um Nicht-Google-Anbieter einzubinden, die eine Eventarc-Quelle anbieten. Weitere Informationen finden Sie unter Drittanbieterereignisse in Eventarc.
Wählen Sie in der Liste Ereignisanbieter die Option Pub/Sub aus, um ein Produkt auszuwählen, das den Ereignistyp zum Auslösen Ihrer Funktion bereitstellt. Eine Liste der Ereignisanbieter finden Sie unter Ereignisanbieter und -ziele.
Wählen Sie in der Liste Ereignistyp die Option google.cloud.pubsub.topic.v1.messagePublished aus. Die Triggerkonfiguration variiert je nach unterstütztem Ereignistyp. Weitere Informationen finden Sie unter Ereignistypen.
Wählen Sie in der Liste Cloud Pub/Sub-Thema auswählen ein Thema aus, das der Trigger überwachen soll. Nachrichten, die Sie zu diesem Thema veröffentlichen, lösen Aufrufe Ihrer Funktion aus.
Wenn das Feld Region aktiviert ist, wählen Sie einen Standort für den Eventarc-Trigger aus. Im Allgemeinen sollte der Standort eines Eventarc-Triggers mit dem Standort derGoogle Cloud -Ressource übereinstimmen, die Sie auf Ereignisse überwachen möchten. In den meisten Szenarien sollten Sie Ihre Funktion auch in derselben Region bereitstellen. Weitere Informationen zu Eventarc-Triggerstandorten finden Sie unter Informationen zu Eventarc-Standorten.
Wählen Sie im Feld Dienstkonto ein Dienstkonto aus. Eventarc-Trigger sind mit Dienstkonten verknüpft, um sie beim Aufrufen Ihrer Funktion als Identität zu verwenden. Das Dienstkonto Ihres Eventarc-Triggers muss die Berechtigung zum Aufrufen Ihrer Funktion haben. Cloud Run verwendet standardmäßig das Compute Engine-Standarddienstkonto.
Geben Sie optional den Dienst-URL-Pfad an, an den die eingehende Anfrage gesendet werden soll. Dies ist der relative Pfad im Zieldienst, an den die Ereignisse für den Trigger gesendet werden sollen. Beispiel:
/,/route,routeundroute/subroute.Optional: Wenn Sie Wiederholungsversuche aktivieren möchten, falls der Zustellungsversuch fehlschlägt, wählen Sie das Kästchen Wiederholungsversuch bei Fehler aktivieren aus. Andernfalls wird standardmäßig ein einzelner Zustellungsversuch ohne Wiederholungsversuche durchgeführt. Weitere Informationen finden Sie unter Ereignisse wiederholen.
Nachdem Sie die Pflichtfelder ausgefüllt haben, klicken Sie auf Trigger speichern.
gcloud
So erstellen Sie mit der gcloud CLI einen Trigger für Ihren Dienst oder Ihre Funktion:
Stellen Sie Ihren Dienst oder Ihre Funktion bereit, falls noch nicht geschehen.
Wenn Sie bereits ein Pub/Sub-Thema haben, überspringen Sie diesen Schritt. Andernfalls erstellen Sie ein Pub/Sub-Thema:
gcloud pubsub topics create TOPIC_NAME
Wählen Sie den Tab für die ausgewählte Triggerkonfiguration aus:
Direkt
Konfigurieren Sie die erforderlichen Rollen für den Pub/Sub-Dienst-Agent:
Erforderliche Rollen für den Pub/Sub-Dienst-Agenten
In den folgenden Schritten wird beschrieben, wie Sie ein Dienstkonto erstellen und verwenden, das vom Pub/Sub-Abo zum Aufrufen Ihres Dienstes oder Ihrer Funktion verwendet werden kann. Diese Schritte sind erforderlich, wenn Sie die Google Cloud CLI verwenden, um einen Pub/Sub-Triggerbefehl zu erstellen. Wenn Sie die Google Cloud Console zum Erstellen des Triggers verwenden, können Sie diese Schritte überspringen.
-
Erstellen oder wählen Sie ein Dienstkonto, das die Pub/Sub-Abo-Identität darstellen soll.
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --display-name "Cloud Run Pub/Sub Invoker"
Ersetzen Sie
SERVICE_ACCOUNT_NAMEdurch einen eindeutigen Namen für Ihr Dienstkonto. -
Gewähren Sie dem Aufrufer-Dienstkonto die Berechtigung zum Aufrufen Ihres Dienstes:
gcloud run services add-iam-policy-binding SERVICE_NAME \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID. \ --role=roles/run.invoker
Es kann einige Minuten dauern, bis die IAM-Änderungen wirksam werden. In der Zwischenzeit werden in den Dienstprotokollen möglicherweise
HTTP 403-Fehler angezeigt. -
Erlauben Sie Pub/Sub, Authentifizierungstokens in Ihrem Projekt zu erstellen:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub. \ --role=roles/iam.serviceAccountTokenCreator
Ersetzen Sie Folgendes:
PROJECT_ID: Projekt-ID in Google Cloud .PROJECT_NUMBER: Ihre Google Cloud Projektnummer
Die Projekt-ID und die Projektnummer werden im Bereich Projektinformationen in der Google Cloud Console für Ihr Projekt aufgeführt.
-
Erstellen Sie ein Pub/Sub-Abo mit dem Dienstkonto:
gcloud pubsub subscriptions create SUBSCRIPTION_NAME \ --topic TOPIC_NAME \ --ack-deadline=600 \ --push-endpoint=SERVICE_URL/ \ --push-auth-service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.
Ersetzen Sie Folgendes:
SUBSCRIPTION_NAME: der Name des Abos, das Sie erstellen möchten.TOPIC_NAME: der Name des zuvor erstellten Themas.SERVICE_URL: Die HTTPS-URL, die bei der Bereitstellung des Dienstes angegeben wurde. Diese URL funktioniert auch, wenn Sie eine Domainzuordnung hinzugefügt haben.SERVICE_ACCOUNT_NAME: der Name des Dienstkontos, das Sie zuvor erstellt haben.PROJECT_ID: Ihre Projekt-ID in Google Cloud .
Hinweise:
Das Flag
--push-auth-service-accountaktiviert die Pub/Sub-Push-Funktion für die Authentifizierung und Autorisierung.Die Domain Ihres Cloud Run-Dienstes wird automatisch für die Verwendung mit Pub/Sub-Abos registriert.
Nur für Cloud Run gibt es eine integrierte Authentifizierungsprüfung, ob das Token gültig ist, und eine Autorisierungsprüfung, ob das Dienstkonto die Berechtigung hat, den Cloud Run-Dienst aufzurufen.
Eventarc
Führen Sie den folgenden Befehl aus, um einen Trigger zu erstellen, der Ereignisse filtert und weiterleitet:
gcloud eventarc triggers create TRIGGER_NAME \ --location=LOCATION \ --destination-run-service=DESTINATION_RUN_SERVICE \ --destination-run-region=DESTINATION_RUN_REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.
Ersetzen Sie Folgendes:
TRIGGER_NAME: die ID des Triggers oder eine voll qualifizierte Kennzeichnung.LOCATION: der Standort des Eventarc-Triggers. Alternativ können Sie das Attributeventarc/locationfestlegen. Beispiel:gcloud config set eventarc/location us-central1.Zur Vermeidung von Leistungs- und Datenstandortproblemen muss der Standort mit dem Standort des Google Cloud -Dienstes übereinstimmen, der die Ereignisse generiert. Weitere Informationen finden Sie unter Eventarc-Standorte.
DESTINATION_RUN_SERVICE: der Name des bereitgestellten Dienstes oder der Cloud Run-Funktion, der bzw. die die Ereignisse für den Trigger empfängt.DESTINATION_RUN_REGION: (optional) die Cloud Run location, in der sich die Cloud Run-Zielfunktion befindet. Wenn keine Angabe erfolgt, wird davon ausgegangen, dass sich die Funktion in derselben Region wie der Trigger befindet.- Das Flag
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"ist erforderlich und kann nicht geändert werden. Für einen anderen Ereignistyp müssen Sie einen neuen Trigger erstellen. TOPIC_NAME: die ID des vorhandenen Pub/Sub-Themas. Das Thema muss sich im selben Projekt wie der Trigger befinden.SERVICE_ACCOUNT_NAME: der Name Ihres nutzerverwalteten Dienstkontos.PROJECT_ID: Projekt-ID in Google Cloud .
Hinweise:
- Optional können Sie mit dem Flag
--max-retry-attemptseinen einzelnen Ereignisübermittlungsversuch ohne Wiederholungen angeben. Der einzige gültige Wert ist1. Wenn Sie das Flag weglassen, gilt das Standardverhalten für Wiederholungsversuche. Weitere Informationen finden Sie unter Ereignisse wiederholen. - Weitere Flags sind verfügbar. Weitere Informationen finden Sie unter
gcloud eventarc triggers create.
Terraform
Informationen zum Erstellen eines Eventarc-Triggers für eine Cloud Run-Funktion finden Sie unter Trigger mit Terraform erstellen.