Ereignisse in einem Cloud Run-Job 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.
Ein Bus fungiert als zentraler Router, der Nachrichten von Ereignisquellen oder von Anbietern empfängt.
Bei einer Registrierung werden Nachrichten, die vom Bus empfangen werden, über eine Verarbeitungspipeline an ein oder mehrere Ziele weitergeleitet.
In dieser Kurzanleitung werden folgende Schritte erläutert:
Cloud Run-Job bereitstellen
Eventarc Advanced-Bus erstellen
Eventarc Advanced-Registrierung erstellen
Veröffentlichen Sie eine Ereignisnachricht im Bus.
Sehen Sie sich die Ereignisdaten in den Logs an und prüfen Sie, ob der Cloud Run-Job erfolgreich ausgeführt wurde.
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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
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 Cloud Run and Eventarc APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com run.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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
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 Cloud Run and Eventarc APIs:
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.gcloud services enable eventarc.googleapis.com
eventarcpublishing.googleapis.com run.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.
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 Run Developer (
roles/run.developer
) -
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 Admin (
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.
-
Cloud Run Developer (
- Damit Eventarc Advanced die erforderlichen Berechtigungen zum Ausführen eines Cloud Run-Jobs erhält, bitten Sie Ihren Administrator, einem Dienstkonto die IAM-Rolle Cloud Run Invoker (
roles/run.invoker
) für IhrGoogle Cloud -Projekt zu gewähren:- 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
- 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 eine Pipeline mit dem Befehl
gcloud eventarc pipelines create
:gcloud eventarc pipelines create PIPELINE_NAME \ --destinations=http_endpoint_uri='https://REGION-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/PROJECT_NUMBER/jobs/JOB_NAME:run',http_endpoint_message_binding_template='{"body": ""}',oauth_token_authentication_service_account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --input-payload-format-json= \ --location=$REGION
Ersetzen Sie Folgendes:
PIPELINE_NAME
: die ID der Pipeline oder ein voll qualifizierter Name, z. B.my-pipeline
.PROJECT_NUMBER
: Ihre Google Cloud Projektnummer. Sie können Ihre Projektnummer mit dem folgenden Befehl abrufen:
gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Wichtige Hinweise:
- Der
http_endpoint_message_binding_template
-Schlüssel transformiert das Ereignis in das Format, das von der Cloud Run Admin API erwartet wird. Wenn Sie eine Nachrichtenbindung definieren, müssen Sie ein Eingabeformat konfigurieren, um auf die Nutzlast zuzugreifen. - Mit dem Schlüssel
oauth_token_authentication_service_account
wird eine E-Mail-Adresse für ein Dienstkonto angegeben. Mit dieser E-Mail-Adresse wird ein OAuth-Token generiert, das in der Regel nur beim Aufrufen von Google APIs verwendet wird, die auf*.googleapis.com
gehostet werden.
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, z. B.:"message.type == 'hello-world-type'"
Filtern Sie die Logeinträge und geben Sie die Ausgabe mit dem Befehl
gcloud logging read
zurück:gcloud logging read 'textPayload: "hello-world-data"'
Suchen Sie nach einem Logeintrag wie dem Folgenden:
insertId: 670808e70002b5c6477709ae labels: instanceId: 007989f2a10a4a33c21024f2c8e06a9de65d9b4fdc2ee27697a50379b3fab2f975b9233dc357d50b06270829b9b479d5a1ee54a10fa2cb2d98c5f77a0895e2be0f9e6e4b20 logName: projects/PROJECT_ID/logs/run.googleapis.com%2Fstderr receiveTimestamp: '2025-10-06T21:15:22.988264020Z' resource: labels: ... type: cloud_run_revision textPayload: "[2025-10-06 21:15:22,676] INFO in server: Body: b'{\"key\": \"hello-world-data\"\ }'" timestamp: '2025-10-06T21:15:22.675530Z'
Prüfen Sie mit dem Befehl
gcloud run jobs describe
, ob der Cloud Run-Job erfolgreich ausgeführt wurde:gcloud run jobs describe JOB_NAME \ --region=$REGION
Die Ausgabe sollte in etwa so aussehen:
✔ Job JOB_NAME in region us-central1 Executed 1 time ...
Eventarc Advanced-Ressourcen löschen:
Cloud Run-Job bereitstellen
Stellen Sie einen Cloud Run-Job als Ereignisziel bereit. Im Gegensatz zu einem Cloud Run-Dienst, der Anfragen überwacht und bereitstellt, führt ein Cloud Run-Job nur seine Aufgaben aus und wird beendet, wenn der Vorgang abgeschlossen ist. Ein Job überwacht weder Anfragen noch verarbeitet er Anfragen.
Andere Ereignisziele wie ein Pub/Sub-Thema, Workflows oder ein anderer HTTP-Endpunkt werden unterstützt. Weitere Informationen finden Sie unter Ereignisanbieter und -ziele.
Stellen Sie einen Job aus einem Beispielcontainer mit dem Befehl gcloud run jobs deploy bereit.
gcloud run jobs deploy JOB_NAME --image us-docker.pkg.dev/cloudrun/container/job:latest \ --region=$REGION
Ersetzen Sie JOB_NAME
durch einen eindeutigen Namen für den Cloud Run-Job, z. B. my-job
.
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
.
Eventarc Advanced-Registrierung erstellen
Eine Registrierung bestimmt, welche Nachrichten an ein Ziel weitergeleitet werden. Außerdem wird die Pipeline angegeben, mit der das Ziel für die Ereignisnachrichten konfiguriert wird. In diesem Fall ist das Ziel ein Cloud Run-Job.
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 im Bus veröffentlichen
Wenn Sie eine Nachricht direkt in Ihrem Bus veröffentlichen möchten, verwenden Sie den Befehl gcloud eventarc message-buses publish
oder senden Sie eine Anfrage an die Eventarc Publishing REST API.
Weitere Informationen finden Sie unter Ereignisse direkt veröffentlichen.
Die Nachricht muss im CloudEvents-Format vorliegen, einer Spezifikation zum allgemeinen Beschreiben von Ereignisdaten. Das data
-Element ist die Nutzlast Ihres Ereignisses. In dieses Feld kann beliebiger wohlgeformter JSON-Code eingefügt werden. Weitere Informationen zu CloudEvents-Kontextattributen finden Sie unter Ereignisformat.
Im Folgenden finden Sie Beispiele für das direkte Veröffentlichen eines Ereignisses in einem Eventarc Advanced-Bus:
Beispiel 1
Veröffentlichen Sie ein Ereignis in einem Bus mit der gcloud CLI und einem --event-data
sowie anderen Flags für Ereignisattribute:
gcloud eventarc message-buses publish BUS_NAME \
--event-data='{"key": "hello-world-data"}' \
--event-id=hello-world-id-1234 \
--event-source=hello-world-source \
--event-type=hello-world-type \
--event-attributes="datacontenttype=application/json" \
--location=$REGION
Beispiel 2
So veröffentlichen Sie ein Ereignis in einem Bus als JSON-Nachricht mit der gcloud CLI und dem Flag --json-message
:
gcloud eventarc message-buses publish BUS_NAME \
--location=$REGION \
--json-message='{"id": "hello-world-id-1234", "type":
"hello-world-type", "source":
"hello-world-source", "specversion": "1.0", "data":
{"key": "hello-world-data"}}'
Nachdem Sie ein Ereignis veröffentlicht haben, sollten Sie die Meldung „Event published successfully“ (Ereignis erfolgreich veröffentlicht) erhalten.
Ereignisdaten in den Cloud Run-Logs ansehen
Nachdem Sie ein Ereignis in Ihrem Eventarc Advanced-Bus veröffentlicht haben, prüfen Sie die Logs Ihres Cloud Run-Jobs, um zu bestätigen, dass das Ereignis wie erwartet empfangen wurde.
Sie haben einen Eventarc Advanced-Bus und eine Anmeldung erstellt, eine Ereignisnachricht im Bus veröffentlicht und das erwartete Ergebnis in den Logs des Ereignisempfängers überprüft.
Bereinigen
Löschen Sie die erstellten Ressourcen, nachdem Sie diese Kurzanleitung abgeschlossen haben, um fortlaufende Kosten zu vermeiden:Alternativ können Sie Ihr Google Cloud Projekt löschen, um Gebühren zu vermeiden. Durch das Löschen des Google Cloud -Projekts wird die Abrechnung für alle in diesem Projekt verwendeten Ressourcen beendet.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID