In Cloud Run können Sie Dienste mit Eventarc als Reaktion auf Pub/Sub Nachrichten auslösen. Wenn Sie einen Pub/Sub-Trigger für Ihren Dienst angeben, geben Sie auch ein Pub/Sub-Thema an. Als Folge dieses Triggers wird Ihr Dienst aufgerufen, wenn Sie eine Nachricht zum angegebenen Thema veröffentlichen.
Das Repository Google Events enthält zusätzliche Ressourcen für die Arbeit mit Ereignisdaten.
Hinweis
Prüfen Sie, ob Sie ein neues Projekt für Cloud Run eingerichtet haben, wie in der Einrichtung Seite beschrieben.
Aktivieren Sie die Artifact Registry, Cloud Build, Cloud Run Admin API, Eventarc, Cloud Logging und Pub/Sub APIs:
Erforderliche Rollen festlegen
Sie oder Ihr Administrator müssen dem Bereitstellerkonto, der Triggeridentität und optional dem Pub/Sub-Dienst-Agent die folgenden IAM-Rollen zuweisen.
Erforderliche Rollen für das Bereitstellerkonto
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 Build-Bearbeiter (
roles/cloudbuild.builds.editor) - Cloud Run-Administrator (
roles/run.admin) - Eventarc Admin (
roles/eventarc.admin) - Zugriffsberechtigter für Logbetrachtung (
roles/logging.viewAccessor) - Projekt-IAM-Administrator (
roles/resourcemanager.projectIamAdmin) - Dienstkontoadministrator (
roles/iam.serviceAccountAdmin) - Dienstkontonutzer (
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.
Erforderliche Rollen für die Triggeridentität
Notieren Sie sich das Compute Engine Standarddienstkonto, das Sie an einen Eventarc-Trigger anhängen, um die Identität des Triggers zu Testzwecken darzustellen. Dieses Dienstkonto wird automatisch nach der Aktivierung oder Verwendung eines Dienstes, der Compute Engine verwendet, mit dem folgenden E-Mail-Format erstellt: Google Cloud
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ersetzen Sie
PROJECT_NUMBERdurch Ihre Google Cloud Projektnummer. Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud console oder durch Ausführen des folgenden Befehls:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Für Produktionsumgebungen empfehlen wir dringend, ein neues Dienstkonto zu erstellen und ihm eine oder mehrere IAM-Rollen zuzuweisen, die die erforderlichen Mindestberechtigungen enthalten und dem Grundsatz der geringsten Berechtigungfolgen.
- Standardmäßig können Cloud Run-Dienste nur von Nutzern mit der Rolle „Project Owner“, „Project Editor“, „Cloud Run Admin“ oder „Cloud Run Invoker“ aufgerufen werden.
Sie können
den Zugriff
für einzelne Dienste steuern. Weisen Sie jedoch zu Testzwecken dem
Compute Engine-Dienstkonto die Rolle „
Cloud Run
Aufrufer“ (
run.invoker) für das Google Cloud Projekt zu. Dadurch wird die Rolle für alle Cloud Run-Dienste und -Jobs in einem Projekt zugewiesen.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.invoker
Wenn Sie einen Trigger für einen authentifizierten Cloud Run-Dienst erstellen, ohne die Rolle "Cloud Run Invoker" zuzuweisen, wird der Trigger erfolgreich erstellt und ist aktiv. Der Trigger funktioniert jedoch nicht wie erwartet und in den Logs wird eine Meldung wie die folgende angezeigt:
The request was not authenticated. Either allow unauthenticated invocations or set the proper Authorization header. - Weisen Sie dem Compute Engine-Standarddienstkonto die Rolle „
Eventarc
Ereignisempfänger“ (
roles/eventarc.eventReceiver) für das Projekt zu, damit der Eventarc-Trigger Ereignisse vom Ereignisanbieter empfangen kann.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/eventarc.eventReceiver
Optionale Rolle für den Pub/Sub-Dienst-Agent
- Wenn Sie den Cloud Pub/Sub-Dienst-Agent am oder vor dem 8. April 2021 aktiviert haben, um authentifizierte Pub/Sub-Push-Anfragen zu unterstützen, weisen Sie dem Dienstkonto die Rolle „Ersteller von Dienstkonto-Tokens“ (
roles/iam.serviceAccountTokenCreator) zu. Andernfalls wird diese Rolle standardmäßig zugewiesen:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Trigger für Dienste erstellen
Sie können einen Trigger angeben, nachdem Sie einen Dienst bereitgestellt haben.
Klicken Sie auf den Tab, um eine Anleitung zum gewünschten Tool zu erhalten.
Console
Stellen Sie Ihren Cloud Run-Dienst mit Containern oder aus der Quelle bereit.
Rufen Sie in der Google Cloud console Cloud Run auf:
Klicken Sie in der Liste der Dienste auf einen vorhandenen Dienst.
Rufen Sie auf der Seite „Dienstdetails“ den Tab Trigger auf.
Klicken Sie auf Trigger hinzufügen und wählen Sie Pub/Sub-Trigger aus.
Ändern Sie im Bereich Eventarc-Trigger die Triggerdetails wie folgt:
Geben Sie im Feld Triggername einen Namen für den Trigger ein oder verwenden Sie den Standardnamen.
Wählen Sie in der Liste einen Triggertyp aus, um einen der folgenden Triggertypen anzugeben:
Google-Quellen zum Angeben von Triggern für Pub/Sub, Cloud Storage, Firestore und andere Google-Ereignisanbieter.
Drittanbieter zur Einbindung in Nicht-Google-Anbieter, die eine Eventarc-Quelle anbieten. Weitere Informationen finden Sie unter Ereignisse von Drittanbietern in Eventarc.
Wählen Sie Pub/Sub aus der Liste Ereignisanbieter aus, um ein Produkt auszuwählen, das den Ereignistyp für das Auslösen Ihres Dienstes bereitstellt. Eine Liste der Ereignisanbieter finden Sie unter Ereignisanbieter und -ziele.
Wählen Sie in der Liste google.cloud.pubsub.topic.v1.messagePublished 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 im Feld 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 an Ihre Funktion aus.
Wenn das Region-Feld aktiviert ist, wählen Sie einen Standort für den Eventarc -Trigger aus. Im Allgemeinen sollte der Standort eines Eventarc Triggers mit dem Standort der Google Cloud Ressource übereinstimmen, die Sie auf Ereignisse überwachen möchten. In den meisten Szenarien sollten Sie Ihren Dienst 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 Ihres Dienstes als Identität zu verwenden. Das Dienstkonto Ihres Eventarc-Triggers muss die Berechtigung zum Aufrufen Ihres Dienstes haben. Standardmäßig verwendet Cloud Run 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.Wenn Sie die Pflichtfelder ausgefüllt haben, klicken Sie auf Trigger speichern.
Nachdem Sie den Trigger erstellt haben, können Sie seinen Status prüfen. Dazu muss ein Häkchen check_circle im Tab Trigger angezeigt werden.
gcloud
Stellen Sie Ihren Cloud Run-Dienst mit Containern oder aus der Quelle bereit.
Führen Sie den folgenden Befehl aus, um einen Trigger zu erstellen, der Ereignisse filtert:
gcloud eventarc triggers create TRIGGER_NAME \ --location=EVENTARC_TRIGGER_LOCATION \ --destination-run-service=SERVICE \ --destination-run-region=REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.comErsetzen Sie:
TRIGGER_NAME durch den Namen für Ihren Trigger.
EVENTARC_TRIGGER_LOCATION durch den Standort für den Eventarc-Trigger. Im Allgemeinen sollte der Standort eines Eventarc-Triggers mit dem Standort der Google Cloud Ressource übereinstimmen, die Sie auf Ereignisse überwachen möchten. In den meisten Szenarien sollten Sie Ihren Dienst auch in derselben Region bereitstellen. Weitere Informationen finden Sie unter Eventarc-Standorte.
SERVICE durch den Namen des Dienstes, den Sie bereitstellen.
REGION durch die Cloud Run-Region des Dienstes. Beispiel:
europe-west1.PROJECT_NUMBER durch Ihre Google Cloud Projektnummer. Eventarc-Trigger sind mit Dienstkonten verknüpft, um sie beim Aufrufen Ihres Dienstes als Identität zu verwenden. Das Dienstkonto Ihres Eventarc-Triggers muss die Berechtigung zum Aufrufen Ihres Dienstes haben. Standardmäßig verwendet Cloud Run das Compute-Standarddienstkonto.
Jedes
event-filters-Flag gibt einen Ereignistyp an. Die Funktion wird nur ausgelöst, wenn ein Ereignis alle Kriterien erfüllt, die in denevent-filters-Flags angegeben sind. Jeder Trigger muss einevent-filters-Flag haben, das einen unterstützten Ereignistypangibt, z. B. ein neues Dokument, das in Firestore geschrieben wurde, oder eine Datei, die in Cloud Storage hochgeladen wurde. Der Ereignisfiltertyp kann nach der Erstellung nicht mehr geändert werden. Wenn Sie den Ereignisfiltertyp ändern möchten, müssen Sie einen neuen Trigger erstellen und den alten löschen. Optional können Sie das Flag--event-filtersmit einem unterstützten Filter im FormatATTRIBUTE=VALUEwiederholen, um weitere Filter hinzuzufügen.
Terraform
Informationen zum Erstellen eines Eventarc-Triggers für einen Cloud Run-Dienst finden Sie unter Trigger mit Terraform erstellen.
Trigger für Funktionen erstellen
Klicken Sie auf den Tab, um eine Anleitung zum gewünschten Tool zu erhalten.
Console
Wenn Sie die Google Cloud console verwenden, um eine Funktion zu erstellen, können Sie Ihrer Funktion auch einen Trigger hinzufügen. So erstellen Sie einen Trigger für Ihre Funktion:
Rufen Sie in der Google Cloud console Cloud Run auf:
Klicken Sie auf Funktion schreiben und geben Sie die Funktionsdetails ein. Weitere Informationen zum Konfigurieren von Funktionen während der Bereitstellung finden Sie unter Funktionen bereitstellen.
Klicken Sie im Bereich Trigger auf Trigger hinzufügen.
Wählen Sie Pub/Sub-Trigger aus.
Ändern Sie im Bereich Eventarc-Trigger die Triggerdetails wie folgt:
Geben Sie im Feld Triggername einen Namen für den Trigger ein oder verwenden Sie den Standardnamen.
Wählen Sie in der Liste einen Triggertyp aus:
Google-Quellen zum Angeben von Triggern für Pub/Sub, Cloud Storage, Firestore und andere Google-Ereignisanbieter.
Drittanbieter zur Einbindung in Nicht-Google-Anbieter, die eine Eventarc-Quelle anbieten. Weitere Informationen finden Sie unter Ereignisse von Drittanbietern in Eventarc.
Wählen Sie Pub/Sub aus der Liste Ereignisanbieter aus, um ein Produkt auszuwählen, das den Ereignistyp für das Auslösen Ihrer Funktion bereitstellt. Eine Liste der Ereignisanbieter finden Sie unter Ereignisanbieter und -ziele.
Wählen Sie in der Liste google.cloud.pubsub.topic.v1.messagePublished 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 im Feld 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 an Ihre Funktion aus.
Wenn das Region-Feld aktiviert ist, wählen Sie einen Standort für den Eventarc -Trigger aus. Im Allgemeinen sollte der Standort eines Eventarc Triggers mit dem Standort der Google 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. Standardmäßig verwendet Cloud Run 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.
Wenn Sie die Pflichtfelder ausgefüllt haben, klicken Sie auf Trigger speichern.
Klicken Sie auf Erstellen.
Bearbeiten Sie auf dem Tab Quelle bei Bedarf den Quellcode und wählen Sie dann Speichern und neu bereitstellen aus.
gcloud
Wenn Sie eine Funktion mit der gcloud CLI erstellen, müssen Sie zuerst die Funktion bereitstellen und dann einen Trigger erstellen. So erstellen Sie einen Trigger für Ihre Funktion:
Führen Sie den folgenden Befehl in dem Verzeichnis aus, das den Beispielcode enthält, um Ihre Funktion bereitzustellen:
gcloud run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE_ID \ --region REGIONErsetzen Sie:
FUNCTION durch den Namen der Funktion, die Sie bereitstellen. Sie können diesen Parameter auch weglassen, werden dann jedoch nach dem Namen gefragt.
FUNCTION_ENTRYPOINT durch den Einstiegspunkt zur Funktion in Ihrem Quellcode. Dies ist der Code, der von Cloud Run beim Ausführen der Funktion ausgeführt wird. Der Wert dieses Flags muss ein Funktionsname oder ein voll qualifizierter Klassenname sein, der in Ihrem Quellcode vorhanden ist.
BASE_IMAGE_ID durch die Basis-Image-Umgebung für Ihre Funktion. Weitere Informationen zu Basis-Images und den enthaltenen Paketen in jedem Image finden Sie unter Basis-Images für Laufzeiten.
REGION durch die Google Cloud Region, in der Sie die Funktion bereitstellen möchten. Beispiel:
europe-west1.
Führen Sie den folgenden Befehl aus, um einen Trigger zu erstellen, der Ereignisse filtert:
gcloud eventarc triggers create TRIGGER_NAME \ --location=EVENTARC_TRIGGER_LOCATION \ --destination-run-service=FUNCTION \ --destination-run-region=REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.comErsetzen Sie:
TRIGGER_NAME durch den Namen für Ihren Trigger.
EVENTARC_TRIGGER_LOCATION durch den Standort für den Eventarc-Trigger. Im Allgemeinen sollte der Standort eines Eventarc-Triggers mit dem Standort der Google 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 finden Sie unter Eventarc-Standorte.
FUNCTION durch den Namen der Funktion, die Sie bereitstellen.
REGION durch die Cloud Run Region der Funktion.
PROJECT_NUMBER durch Ihre Google Cloud Projektnummer. 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. Standardmäßig verwendet Cloud Run das Compute-Standarddienstkonto.
Jedes
event-filters-Flag gibt einen Ereignistyp an. Die Funktion wird nur ausgelöst, wenn ein Ereignis alle Kriterien erfüllt, die in denevent-filters-Flags angegeben sind. Jeder Trigger muss einevent-filters-Flag haben, das einen unterstützten Ereignistypangibt, z. B. ein neues Dokument, das in Firestore geschrieben wurde, oder eine Datei, die in Cloud Storage hochgeladen wurde. Der Ereignisfiltertyp kann nach der Erstellung nicht mehr geändert werden. Wenn Sie den Ereignisfiltertyp ändern möchten, müssen Sie einen neuen Trigger erstellen und den alten löschen. Optional können Sie das Flag--event-filtersmit einem unterstützten Filter im FormatATTRIBUTE=VALUEwiederholen, um weitere Filter hinzuzufügen.
Terraform
Informationen zum Erstellen eines Eventarc-Triggers für eine Cloud Run-Funktion, siehe Trigger mit Terraform erstellen.
Nächste Schritte
- Informationen zum Auslö0}sen mit Ereignissen
- Informationen zum Auslösen von Diensten aus Pub/Sub.
- Informationen zum Konfigurieren von Wiederholungen