Ereignisse in einem Cloud Run-Job veröffentlichen

In dieser Kurzanleitung wird gezeigt, wie Sie Ereignisnachrichten veröffentlichen und empfangen, indem Sie einen Eventarc Advanced-Bus und eine Anmeldung in Ihrem Google Cloud-Projekt erstellen.

  • Ein Bus fungiert als zentraler Router, der Nachrichten von Ereignisquellen oder von Anbietern empfängt.

  • Bei einer Registrierung werden Nachrichten, die über den Bus empfangen werden, über eine Verarbeitungspipeline an ein oder mehrere Ziele weitergeleitet.

In dieser Kurzanleitung werden folgende Schritte erläutert:

  1. Cloud Run-Job aus Quellcode bereitstellen

  2. Eventarc Advanced-Bus erstellen

  3. Eventarc Advanced-Registrierung erstellen

  4. Veröffentlichen Sie eine Ereignisnachricht im Bus.

  5. Prüfen Sie, ob der Cloud Run-Job erfolgreich ausgeführt wurde.

Sie können diese Kurzanleitung mit der gcloud CLI ausführen.

Hinweis

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.

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Installieren Sie die Google Cloud CLI.

  3. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  4. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  5. Google Cloud Projekt erstellen oder auswählen

    Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts

    • Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
    • Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Project Creator“ (roles/resourcemanager.projectCreator), die die Berechtigung resourcemanager.projects.create enthält. Informationen zum Zuweisen von Rollen
    • So erstellen Sie ein Google Cloud Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud Projekt, das Sie erstellen.

    • Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch Ihren Google Cloud Projektnamen.

  6. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.

  7. Aktivieren Sie die Artifact Registry API, die Cloud Build API, die Cloud Run API und die Eventarc API, falls sie noch nicht aktiviert sind:

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com 
  8. Installieren Sie die Google Cloud CLI.

  9. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  10. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  11. Google Cloud Projekt erstellen oder auswählen

    Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts

    • Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
    • Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Project Creator“ (roles/resourcemanager.projectCreator), die die Berechtigung resourcemanager.projects.create enthält. Informationen zum Zuweisen von Rollen
    • So erstellen Sie ein Google Cloud Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud Projekt, das Sie erstellen.

    • Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch Ihren Google Cloud Projektnamen.

  12. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.

  13. Aktivieren Sie die Artifact Registry API, die Cloud Build API, die Cloud Run API und die Eventarc API, falls sie noch nicht aktiviert sind:

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com 
  14. Aktualisieren Sie die gcloud-Komponenten:
    gcloud components update
  15. Melden Sie sich mit Ihrem -Konto an:
    gcloud auth login
  16. 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.

  17. 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 der Kurzanleitung benötigen:

    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.

  18. 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:
    1. Erstellen Sie ein Dienstkonto. Zu Testzwecken hängen Sie dieses Dienstkonto an eine Eventarc Advanced-Pipeline an, um die Identität der Pipeline darzustellen.
      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
      Ersetzen Sie SERVICE_ACCOUNT_NAME durch einen Namen für Ihr Dienstkonto.
    2. 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

Cloud Run-Job aus Quellcode 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.

Erstellen Sie einen Job aus Python-Quellcode mit dem Befehl gcloud run jobs deploy. Ihr Code wird automatisch in ein Container-Image verpackt, in Artifact Registry hochgeladen und dann in Cloud Run bereitgestellt.

  1. Erstellen Sie ein Verzeichnis mit dem Namen jobs und rufen Sie es auf:

    mkdir jobs
    cd jobs
    
  2. Erstellen Sie eine main.py-Datei und kopieren Sie den folgenden Beispielcode hinein:

    import os
    
    TASK_INDEX = os.getenv("CLOUD_RUN_TASK_INDEX", 0)
    
    def main():
        """
        This job prints "Hello world"
        """
        print(f"Starting task #{TASK_INDEX}...")
        print("Hello world")
        print(f"Completed task #{TASK_INDEX}.")
    
    # Start script
    if __name__ == "__main__":
        main()
    
  3. Erstellen Sie eine Textdatei mit dem Namen Procfile ohne Dateiendung und kopieren Sie den folgenden Text hinein:

    web: python3 main.py
    
  4. Stellen Sie den Job bereit:

    gcloud run jobs deploy JOB_NAME \
        --source . \
        --tasks 1 \
        --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:

  1. Erstellen Sie eine Pipeline mit dem Befehl gcloud eventarc pipelines create:

    gcloud eventarc pipelines create PIPELINE_NAME \
        --destinations=http_endpoint_uri='JOB_URI',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.
    • JOB_URI: Der URI des Cloud Run-Jobs im folgenden Format:

      https://REGION-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/PROJECT_NUMBER/jobs/JOB_NAME:run

      Sie können Ihre Projektnummer mit dem folgenden Befehl abrufen:

      gcloud projects describe PROJECT_ID --format='value(projectNumber)'

    Wichtige Hinweise:

    • Mit dem http_endpoint_message_binding_template-Schlüssel wird das Ereignis in das Format umgewandelt, 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, z. B. {"body": ""}.
    • Mit dem oauth_token_authentication_service_account-Schlüssel wird eine E‑Mail-Adresse für das 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.
  2. 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 voll qualifizierter Name, z. B. my-enrollment.
    • MATCH_EXPRESSION: Der Abgleichsausdruck für diese Registrierung mit CEL, z. B.:

      "message.type == 'hello-world-type'"
      

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-Flag 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 als JSON-Nachricht in einem Bus 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.

Prüfen, ob der Cloud Run-Job erfolgreich ausgeführt wurde

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 der Cloud Run-Job erfolgreich ausgeführt wurde und „Hello world“ ausgegeben wurde. Es kann einige Minuten dauern, bis der Job ausgeführt und abgeschlossen wird.

  1. Filtern Sie die Logeinträge und geben Sie die Ausgabe mit dem Befehl gcloud logging read zurück:

    gcloud logging read 'textPayload: "Hello world"'
    
  2. Suchen Sie nach einem Logeintrag wie dem Folgenden:

    insertId: 693c8dd0000cb2976d7966b8
    ...
    labels:
        job_name: JOB_NAME
        location: REGION
        project_id: PROJECT_ID
    type: cloud_run_job
    textPayload: Hello world
    timestamp: '2025-12-12T21:49:04.832151Z'
    
  3. Sie können auch mit dem Befehl gcloud run jobs describe prüfen, 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
    ...
    

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

Damit nach Abschluss dieser Kurzanleitung keine weiteren Kosten entstehen, löschen Sie die erstellten Ressourcen:

  1. Cloud Run-Job löschen

  2. Eventarc Advanced-Ressourcen löschen:

    1. Registrierung löschen

    2. Pipeline löschen

    3. Bus löschen

Alternativ können Sie Ihr Google Cloud -Projekt löschen, um Gebühren zu vermeiden. Wenn Sie Ihr Google Cloud -Projekt löschen, wird die Abrechnung für alle in diesem Projekt verwendeten Ressourcen beendet.

Google Cloud -Projekt löschen:

gcloud projects delete PROJECT_ID

Nächste Schritte