Ereignisse aus einer Google-Quelle veröffentlichen
Sie können die Erfassung und Veröffentlichung von Ereignissen aus Google-Quellen aktivieren. Weitere Informationen finden Sie unter Ereignisse aus Google-Quellen veröffentlichen.
In dieser Kurzanleitung wird gezeigt, wie Sie Ereignisnachrichten veröffentlichen und empfangen. Dazu erstellen Sie einen Eventarc Advanced-Bus und registrieren sich in Ihrem Google Cloud-Projekt.
Mit einem Bus können Sie den Nachrichtenfluss in Ihrem System zentralisieren. Er fungiert als Router. Es empfängt Ereignisnachrichten von einer Nachrichtenquelle oder die von einem Anbieter veröffentlicht wurden, und wertet sie gemäß einer Registrierung aus.
Eine Anmeldung weist ein Abo einem bestimmten Bus zu und definiert die Abgleichkriterien für Nachrichten, sodass sie entsprechend an ein oder mehrere Ziele weitergeleitet werden.
In dieser Kurzanleitung werden folgende Schritte erläutert:
einen Ereignisempfängerdienst für Cloud Run bereitstellen
Eventarc Advanced-Bus erstellen
Aktivieren Sie Ereignisse aus Google-Quellen.
Eventarc Advanced-Registrierung erstellen
Veröffentlichen Sie eine Ereignisnachricht im Bus, indem Sie einen Workflow erstellen.
Rufen Sie die Ereignisdaten in den Cloud Run-Logs auf.
Sie können diese Kurzanleitung mit der gcloud CLI ausführen.
Hinweise
Von Ihrer Organisation definierte Sicherheitsbeschränkungen verhindern möglicherweise, dass die folgenden Schritte ausgeführt werden. Informationen zur Fehlerbehebung finden Sie unter Anwendungen in einer eingeschränkten Google Cloud -Umgebung entwickeln.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Install the Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Workflows APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com -
Install the Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Eventarc, and Workflows APIs:
gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com - Aktualisieren Sie die
gcloud
-Komponenten:gcloud components update
- Melden Sie sich mit Ihrem -Konto an:
gcloud auth login
- Legen Sie die in dieser Kurzanleitung verwendete Konfigurationsvariable fest:
REGION=REGION
Ersetzen Sie
REGION
durch einen unterstützten Standort für den Bus, z. B.us-central1
. -
Wenn Sie der Projektersteller sind, wird Ihnen die einfache Owner-Rolle (
roles/owner
) zugewiesen. Standardmäßig enthält diese IAM-Rolle (Identity and Access Management) die Berechtigungen, die für den vollständigen Zugriff auf die meisten Google Cloud-Ressourcen erforderlich sind. Sie können diesen Schritt überspringen.Wenn Sie nicht der Project Creator sind, müssen dem entsprechenden Hauptkonto die erforderlichen Berechtigungen für das Projekt erteilt werden. Ein Hauptkonto kann beispielsweise ein Google-Konto (für Endnutzer) oder ein Dienstkonto (für Anwendungen und Computing-Arbeitslasten) sein.
Beachten Sie, dass Cloud Build-Berechtigungen standardmäßig Berechtigungen zum Hochladen und Herunterladen von Artifact Registry-Artefakten enthalten.
Erforderliche Berechtigungen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen dieser Kurzanleitung benötigen:
-
Cloud Build-Bearbeiter (
roles/cloudbuild.builds.editor
) -
Cloud Run-Administrator (
roles/run.admin
) -
Eventarc-Entwickler (
roles/eventarc.developer
) -
Eventarc Message Bus Admin (
roles/eventarc.messageBusAdmin
) -
Zugriffsberechtigter für Logbetrachtung (
roles/logging.viewAccessor
) -
Projekt-IAM-Administrator (
roles/resourcemanager.projectIamAdmin
) -
Service Account Admin (
roles/iam.serviceAccountAdmin
) -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) -
Service Usage-Administrator (
roles/serviceusage.serviceUsageAdmin
-
Workflows Editor (
roles/workflows.editor
)
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.
-
Cloud Build-Bearbeiter (
- Weisen Sie dem Compute Engine-Standarddienstkonto die folgenden Rollen für das Projekt zu. Diese Rollen sind zum Erstellen und Bereitstellen Ihres Container-Images erforderlich:
- Artifact Registry Writer (
roles/artifactregistry.writer
): zum Hochladen von Artifact Registry-Artefakten - Logs Writer (
roles/logging.logWriter
): Zum Schreiben von Logs in Cloud Logging - Storage-Objekt-Nutzer (
roles/storage.objectUser
): für den Zugriff auf Cloud Storage-Objekte
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/artifactregistry.writer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/storage.objectUser
Ersetzen Sie
PROJECT_NUMBER
durch die Projektnummer Ihres Google Cloud-Projekts. Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud -Konsole oder durch Ausführen des folgenden Befehls:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
- Artifact Registry Writer (
- Standardmäßig können Cloud Run-Dienste nur von Projektinhabern, Projektbearbeitern, Cloud Run-Administratoren und Cloud Run-Aufrufern aufgerufen werden. Um die Authentifizierung einzurichten, weisen Sie einem Dienstkonto die Rolle „Cloud Run Invoker“ (
run.invoker
) für Ihr Google Cloud -Projekt zu:- Erstellen Sie ein Dienstkonto. Zu Testzwecken hängen Sie dieses Dienstkonto an eine Eventarc Advanced-Pipeline an, um die Identität der Pipeline darzustellen.
Ersetzen Siegcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAME
durch einen Namen für Ihr Dienstkonto. - Weisen Sie dem Dienstkonto die IAM-Rolle
roles/run.invoker
zu:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/run.invoker
Sie können konfigurieren, wer auf Ihren Cloud Run-Dienst zugreifen kann, indem Sie eine der folgenden Methoden verwenden:
- Erteilen Sie die Berechtigung zum Auswählen von Dienstkonten oder Gruppen, um den Zugriff auf den Dienst zu ermöglichen. Alle Anfragen müssen einen HTTP-Autorisierungs-Header enthalten, der ein von Google für ein autorisiertes Dienstkonto signiertes OpenID Connect-Token enthält. So wird der Zugriff in dieser Kurzanleitung konfiguriert.
- Gewähren Sie die Berechtigung für
allUsers
, um den nicht authentifizierten Zugriff zu ermöglichen.
Weitere Informationen finden Sie unter Zugriffssteuerung für Cloud Run.
- Erstellen Sie ein Dienstkonto. Zu Testzwecken hängen Sie dieses Dienstkonto an eine Eventarc Advanced-Pipeline an, um die Identität der Pipeline darzustellen.
Erstellen Sie ein Artifact Registry-Standard-Repository zum Speichern des Container-Images.
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=$REGION
Ersetzen Sie
REPOSITORY
durch einen eindeutigen Namen für das Artifact Registry-Repository, z. B.my-repo
.Klonen Sie das GitHub-Repository:
git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
Wechseln Sie in das Verzeichnis, das den Cloud Run-Beispielcode enthält:
cd eventarc-samples/eventarc-advanced-quickstart/
Erstellen Sie ein Docker-Container-Image und übertragen Sie es per Push in Ihr Repository:
gcloud builds submit \ --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1
Stellen Sie das Container-Image in Cloud Run bereit:
gcloud run deploy SERVICE_NAME \ --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1 \ --platform managed \ --ingress all \ --no-allow-unauthenticated \ --region=$REGION
Ersetzen Sie
SERVICE_NAME
durch den Namen Ihres Dienstes, z. B.my-service
.Wichtige Hinweise:
Mit dem Flag
--platform
wird die Zielplattform festgelegt, in diesem Fall eine vollständig verwaltete Version von Cloud Run.Die Ingress-Einstellung
all
ermöglicht alle Anfragen, einschließlich Anfragen direkt aus dem Internet an die URLrun.app
. Weitere Informationen finden Sie unter Eingehenden Traffic für Cloud Run einschränken.Das Flag
--no-allow-unauthenticated
konfiguriert den Dienst so, dass nur authentifizierte Aufrufe zulässig sind.Wenn die Cloud Run-Dienst-URL angezeigt wird, ist die Bereitstellung abgeschlossen.
Kopieren und speichern Sie die Cloud Run-Dienst-URL, da Sie sie in einem späteren Schritt benötigen.
Erstellen Sie eine Pipeline mit dem Befehl
gcloud eventarc pipelines create
:gcloud eventarc pipelines create PIPELINE_NAME \ --destinations=http_endpoint_uri='CLOUD_RUN_SERVICE_URL',google_oidc_authentication_service_account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=$REGION
Ersetzen Sie Folgendes:
PIPELINE_NAME
: die ID der Pipeline oder ein voll qualifizierter Name, z. B.my-pipeline
.CLOUD_RUN_SERVICE_URL
: die vollständig qualifizierte URL Ihres Cloud Run-Dienstes, z. B.https://SERVICE_NAME-abcdef-uc.a.run.app
. Dies ist das Ziel für Ihre Ereignisnachrichten.
Der
google_oidc_authentication_service_account
-Schlüssel gibt eine E-Mail-Adresse für das Dienstkonto an, die zum Generieren eines OIDC-Tokens verwendet wird.Erstellen Sie eine Registrierung mit dem Befehl
gcloud eventarc enrollments create
:gcloud eventarc enrollments create ENROLLMENT_NAME \ --cel-match=MATCH_EXPRESSION \ --destination-pipeline=PIPELINE_NAME \ --message-bus=BUS_NAME \ --message-bus-project=PROJECT_ID \ --location=$REGION
Ersetzen Sie Folgendes:
ENROLLMENT_NAME
: Die ID der Registrierung oder ein vollqualifizierter Name, z. B.my-enrollment
.MATCH_EXPRESSION
: Der Abgleichsausdruck für diese Registrierung mit CEL. Wenn Sie beispielsweise Ereignisnachrichten veröffentlichen möchten, wenn ein Workflows-Workflow erstellt wird, verwenden Sie den folgenden Ausdruck:"message.type == 'google.cloud.workflows.workflow.v1.created'"
Erstellen Sie in Ihrem Basisverzeichnis eine neue Datei mit dem Namen
myWorkflow.yaml
.Kopieren Sie den folgenden Workflow, fügen Sie ihn in die neue Datei ein und speichern Sie ihn:
- getCurrentTime: call: http.get args: url: https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam result: currentTime - readWikipedia: call: http.get args: url: https://en.wikipedia.org/w/api.php query: action: opensearch search: ${currentTime.body.dayOfWeek} result: wikiResult - returnResult: return: ${wikiResult.body[1]}
In diesem Workflow wird der aktuelle Wochentag als Suchbegriff an die Wikipedia API übergeben. Es wird eine Liste mit ähnlichen Wikipedia-Artikeln zurückgegeben.
Stellen Sie den Workflow bereit und verknüpfen Sie ihn mit dem angegebenen Dienstkonto, indem Sie den Befehl
gcloud workflows deploy
verwenden:gcloud workflows deploy myWorkflow --source=myWorkflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=$REGION
Filtern Sie die Logeinträge und geben Sie die Ausgabe mit dem Befehl
gcloud logging read
zurück:gcloud logging read 'textPayload: "google.cloud.workflows.workflow.v1.created"'
Suchen Sie nach einem Logeintrag wie dem Folgenden:
insertId: 689644c30004cde066603b3a labels: instanceId: 0069c7a98846e3b870396a63478212b9642512ef362b67c33090846e10498949c671ccfefbc66f4f093796406e9a714bebc6fbb82f321578134ef95e56f9e9986c3265d2820b56f7994617ba7172ab logName: projects/PROJECT_ID/logs/run.googleapis.com%2Fstderr receiveTimestamp: '2025-08-08T18:41:07.632226222Z' resource: labels: ... type: cloud_run_revision textPayload: 'Ce-Type: google.cloud.workflows.workflow.v1.created' timestamp: '2025-08-08T18:41:07.314848Z'
Eventarc Advanced-Ressourcen löschen:
Ereignisempfängerdienst für Cloud Run bereitstellen
Stellen Sie einen Cloud Run-Dienst als Ereignisziel bereit, der den Inhalt eines Ereignisses protokolliert. Andere Ereignisziele wie ein Pub/Sub-Thema, Workflows oder ein HTTP-Endpunkt werden unterstützt. Weitere Informationen finden Sie unter Ereignisanbieter und -ziele.
Eventarc Advanced-Bus erstellen
Ein Bus empfängt Ereignisnachrichten von einer Nachrichtenquelle oder von einem Anbieter und fungiert als Nachrichtenrouter.
Weitere Informationen finden Sie unter Bus zum Weiterleiten von Nachrichten erstellen.
Erstellen Sie mit dem Befehl gcloud eventarc message-buses create
einen Eventarc Advanced-Bus in Ihrem Projekt:
gcloud eventarc message-buses create BUS_NAME \ --location=$REGION
Ersetzen Sie BUS_NAME
durch die ID Ihres Busses oder einen vollständig qualifizierten Namen, z. B. my-bus
.
Ereignisse aus Google-Quellen aktivieren
Wenn Sie Ereignisse aus Google-Quellen veröffentlichen möchten, müssen Sie eine GoogleApiSource
-Ressource erstellen. Diese Ressource stellt ein Abo für Google API-Ereignisse für einen bestimmten Eventarc Advanced-Bus in einem bestimmten Google Cloud Projekt und einer bestimmten Region dar.
Aktivieren Sie Ereignisse von Google-Quellen mit dem Befehl gcloud eventarc google-api-sources create
:
gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \ --destination-message-bus=BUS_NAME \ --destination-message-bus-project=PROJECT_ID \ --location=$REGION
Ersetzen Sie GOOGLE_API_SOURCE_NAME
durch die ID Ihrer GoogleApiSource
-Ressource oder einen vollständig qualifizierten Namen, z. B. my-google-api-source
.
Alle unterstützten Google-Ereignistypen, die direkt von einer Google-Quelle gesendet werden, werden jetzt erfasst und in Ihrem Bus veröffentlicht.
Eventarc Advanced-Registrierung erstellen
Eine Anmeldung bestimmt, welche Nachrichten an ein Ziel weitergeleitet werden, und gibt auch die Pipeline an, die zum Konfigurieren eines Ziels für die Ereignisnachrichten verwendet wird.
Weitere Informationen finden Sie unter Registrierung erstellen, um Ereignisse zu empfangen.
Wenn Sie die gcloud CLI verwenden, erstellen Sie zuerst eine Pipeline und dann eine Registrierung:
Ereignisnachricht über einen Workflow im Bus veröffentlichen
Workflows ist eine vollständig verwaltete Orchestrierungsplattform, die Dienste in einer von Ihnen definierten Reihenfolge ausführt: einem Workflow. Erstellen Sie einen Workflow, um einen unterstützten Ereignistyp aus einer Google-Quelle zu generieren.
Ereignisdaten in den Cloud Run-Logs ansehen
Nachdem Sie ein Ereignis in Ihrem Eventarc Advanced-Bus veröffentlicht haben, können Sie in den Logs Ihres Cloud Run-Dienstes prüfen, ob das Ereignis wie erwartet empfangen wurde.
Sie haben erfolgreich einen Eventarc Advanced-Bus und eine Registrierung erstellt, die Veröffentlichung von Ereignissen aus Google-Quellen aktiviert, einen Workflow zum Generieren eines unterstützten Ereignistyps von einem Google-Anbieter erstellt und dann das erwartete Ergebnis in den Logs des Ereignisempfängerdienstes überprüft.
Bereinigen
Nach Abschluss der in dieser Kurzanleitung beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen:
Alternativ können Sie Ihr Google Cloud -Projekt löschen, um wiederkehrende Gebühren zu vermeiden. Wenn Sie Ihr Google Cloud -Projekt löschen, wird die Abrechnung für alle in diesem Projekt verwendeten Ressourcen beendet.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID