Ereignisse veröffentlichen und empfangen, indem Sie einen Bus und eine Registrierung erstellen (Console)

In dieser Kurzanleitung erfahren Sie, wie Sie Ereignisnachrichten veröffentlichen und empfangen, indem Sie einen Eventarc Advanced-Bus erstellen und sich in Ihrem Google Cloud Projekt registrieren.

  • Mit einem Bus können Sie den Nachrichtenfluss durch Ihr System zentralisieren und er fungiert als Router. Er empfängt Ereignisnachrichten von einer Nachrichtenquelle oder von einem Anbieter und wertet sie gemäß einer Anmeldung aus.

  • Eine Registrierung identifiziert ein Abo für einen bestimmten Bus und definiert die Abgleichkriterien für Nachrichten, die entsprechend an ein oder mehrere Ziele weitergeleitet werden.

In dieser Kurzanleitung werden folgende Schritte erläutert:

  1. Erstellen Sie ein Subnetz und aktivieren Sie den privaten Google-Zugriff.

  2. Netzwerkanhang erstellen

  3. Erstellen Sie ein Artifact Registry-Standard-Repository.

  4. einen Ereignisempfängerdienst für Cloud Run bereitstellen

  5. Erstellen Sie einen Eventarc Advanced-Bus.

  6. Erstellen Sie eine Eventarc Advanced-Registrierung.

  7. Eine Ereignisnachricht auf dem Bus veröffentlichen.

  8. Rufen Sie die Ereignisdaten in den Cloud Run-Logs auf.

Die meisten Schritte in dieser Kurzanleitung können Sie mit der Google Cloud Console ausführen. Eine Anleitung zum Ausführen aller Schritte mit der Google Cloud CLI finden Sie unter Ereignisse veröffentlichen und empfangen, indem Sie einen Bus und eine Registrierung erstellen (gcloud CLI).

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.

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.

    Enable the APIs

  8. Für einige Schritte in dieser Kurzanleitung müssen Sie die gcloud CLI verwenden:
    1. Richten Sie die gcloud CLI in einer der folgenden Entwicklungsumgebungen ein:

      Cloud Shell

      Wenn Sie ein Onlineterminal mit bereits eingerichteter gcloud CLI einrichten möchten, aktivieren Sie Cloud Shell.

      Unten auf dieser Seite wird eine Cloud Shell-Sitzung gestartet und eine Eingabeaufforderung angezeigt. Das Initialisieren der Sitzung kann einige Sekunden dauern.

      Lokale Shell

      So verwenden Sie eine lokale Entwicklungsumgebung:

      1. Installieren Sie die gcloud CLI.
      2. Initialisieren Sie die gcloud CLI.
    2. Wählen Sie Ihr Google Cloud-Projekt aus:
      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch den Namen Ihres Google Cloud-Projekts.

    3. Aktualisieren Sie die gcloud-Komponenten:
      gcloud components update
    4. Melden Sie sich mit Ihrem -Konto an:
      gcloud auth login
    5. Legen Sie die in dieser Kurzanleitung verwendete Konfigurationsvariable fest:
      REGION=us-central1
  9. Wenn Sie der Projektersteller sind, wird Ihnen die einfache Rolle „Inhaber“ (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:

    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.

  10. Weisen Sie dem Compute Engine-Standarddienstkonto Rollen für das Projekt zu. Diese Rollen sind zum Erstellen und Bereitstellen Ihres Container-Images erforderlich.
    1. Öffnen Sie in der Google Cloud Console die Seite IAM.

      IAM aufrufen

    2. Wenn Sie die Rollen für das Dienstkonto ändern möchten, das bereits Rollen für die Ressource hat, suchen Sie die Zeile mit dem Hauptkonto.

      oder

      Wenn Sie dem Dienstkonto Rollen zuweisen möchten, für das es noch keine Rollen für die Ressource gibt, klicken Sie auf Zugriff gewähren und geben Sie dann die Kennung für das Standarddienstkonto der Compute Engine in das folgende Formular ein:

      PROJECT_NUMBER-compute@developer.gserviceaccount.com

      Ersetzen Sie PROJECT_NUMBER durch die Projektnummer Google Cloud. Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud Console.

    3. Klicken Sie in der entsprechenden Zeile auf Hauptkonto bearbeiten.
    4. Klicken Sie entweder auf Rolle hinzufügen oder Weitere Rolle hinzufügen.
    5. Filtern Sie in der Liste Rolle auswählen nach den folgenden Rollen und wählen Sie sie aus:
    6. Klicken Sie auf Speichern.
  11. Standardmäßig können Cloud Run-Dienste nur von Projektinhabern, Projektbearbeitern, Cloud Run-Administratoren und Cloud Run-Aufrufern aufgerufen werden. Weisen Sie zum Einrichten der Authentifizierung einem Dienstkonto die Rolle Cloud Run Invoker für Ihr Google Cloud Projekt zu. Zu Testzwecken hängen Sie dieses Dienstkonto an eine erweiterte Eventarc-Pipeline an, um die Identität der Pipeline darzustellen.
    1. Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:

      Zur Seite „Dienstkonten“

    2. Klicken Sie auf Dienstkonto erstellen.
    3. Geben Sie im Feld Name des Dienstkontos einen Namen ein.
    4. Klicken Sie auf Erstellen und fortfahren.
    5. Filtern Sie in der Liste Rolle auswählen nach der Rolle Cloud Run Invoker und wählen Sie sie aus.
    6. Klicken Sie auf Fertig.

    Sie können so konfigurieren, wer auf Ihren Cloud Run-Dienst zugreifen kann:

    • 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 allUsers die Berechtigung, den nicht authentifizierten Zugriff zuzulassen.

    Weitere Informationen finden Sie unter Zugriffssteuerung für Cloud Run.

Subnetz erstellen und privaten Google-Zugriff aktivieren

Sofern Sie keine Organisationsrichtlinie erstellen, die dies verbietet, beginnen neue Google CloudProjekte mit einem Standard-VPC-Netzwerk (Virtual Private Cloud) (einem VPC-Netzwerk im automatischen Modus), das in jeder Region ein Subnetzwerk (Subnetz) hat. Subnetzen sind IP-Adressbereiche zugeordnet.

Da Sie Nachrichten mithilfe einer DNS-Adresse an ein Cloud Run-Ziel weiterleiten, müssen Sie den privaten Google-Zugriff in dem im Netzwerkanhang verwendeten Subnetz aktivieren. Andernfalls kann die DNS-Adresse nicht aufgelöst werden. Weitere Informationen zu privaten Netzwerken und Cloud Run finden Sie unter Anfragen aus VPC-Netzwerken empfangen.

Erstellen Sie ein Subnetz im Standardnetzwerk Ihres Projekts und aktivieren Sie den privaten Google-Zugriff:

  1. Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.

    Zur Seite VPC-Netzwerke

  2. Klicken Sie in der Liste der VPC-Netzwerke auf den Namen default.

  3. Klicken Sie auf der Seite VPC-Netzwerkdetails auf den Tab Subnetze.

  4. Klicken Sie auf Subnetz hinzufügen.

  5. Führen Sie im Bereich Subnetz hinzufügen die folgenden Schritte aus:

    1. Geben Sie einen Namen ein, z. B. my-subnet.
    2. Wählen Sie in der Liste Region die Option us-central1 aus.
    3. Geben Sie einen primären IPv4-Bereich für das Subnetz ein, z. B. 10.8.0.0/24.
    4. Wählen Sie für Privater Google-Zugriff die Option Ein aus.
    5. Übernehmen Sie alle anderen Standardeinstellungen.
    6. Klicken Sie auf Hinzufügen.

IP-Bereiche von Subnetzwerken müssen eindeutig sein und dürfen sich innerhalb eines VPC-Netzwerks und eines Peering-VPC-Netzwerks nicht überschneiden. Weitere Informationen zu Subnetztypen und gültigen Subnetzbereichen finden Sie unter Subnetze.

Netzwerkanhang erstellen

Ein Netzwerkanhang ist eine Ressource, mit der ein VPC-Netzwerk (Virtual Private Cloud) eines Erstellers Verbindungen zu einem Nutzer-VPC-Netzwerk initiieren kann. Eventarc Advanced verwendet zum Veröffentlichen von Ereignissen den Netzwerkanhang, um eine Verbindung zum Endpunkt herzustellen, der in einem VPC-Netzwerk gehostet wird.

Erstellen Sie einen Netzwerkanhang im selben Netzwerk und in derselben Region wie der Ereigniszielendpunkt, der automatisch Verbindungen von jeder Private Service Connect-Schnittstelle akzeptiert, die auf den Netzwerkanhang verweist:

  1. Wechseln Sie in der Google Cloud Console zu Private Service Connect.

    Zu Private Service Connect

  2. Klicken Sie auf den Tab Netzwerkanhänge.

  3. Klicken Sie auf Netzwerkanhang erstellen.

  4. Geben Sie einen Namen ein, z. B. my-network-attachment.

  5. Wählen Sie in der Liste Netzwerk die Option Standard aus.

  6. Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.

  7. Wählen Sie in der Liste Subnetzwerk das zuvor erstellte Subnetz aus.

  8. Klicken Sie auf Verbindungen für alle Projekte automatisch akzeptieren.

  9. Klicken Sie auf Netzwerkanhang erstellen.

Artifact Registry-Standard-Repository erstellen

Erstellen Sie ein Artifact Registry-Standard-Repository zum Speichern des Container-Images.

  1. Rufen Sie in der Google Cloud Console die Seite Repositories auf.

    Zu Repositories

  2. Klicken Sie auf Repository erstellen.

  3. Geben Sie einen Namen ein, z. B. my-repo.

    Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.

  4. Wählen Sie als Format die Option Docker aus.

  5. Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.

  6. Übernehmen Sie alle anderen Standardeinstellungen.

  7. Klicken Sie auf Erstellen.

Ereignisempfängerdienst in Cloud Run bereitstellen

Stellen Sie einen Cloud Run-Dienst bereit, der den Inhalt eines Ereignisses protokolliert. Auf diesen Dienst kann nur von VPC-Netzwerken innerhalb desselben Projekts zugegriffen werden. Auf die Dienst-URL kann nicht direkt zugegriffen werden, da der Dienst nur authentifizierte Aufrufe zulässt.

  1. Klonen Sie im Terminal das GitHub-Repository:

    git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
  2. Wechseln Sie in das Verzeichnis, das den Cloud Run-Beispielcode enthält:

    cd eventarc-samples/eventarc-advanced-quickstart/
  3. 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

    Ersetzen Sie dabei REPOSITORY durch den Namen Ihres Artifact Registry-Repositorys.

  4. Stellen Sie das Container-Image in Cloud Run bereit:

    1. Wechseln Sie in der Google Cloud Console zur Seite Cloud Run.

      Zu Cloud Run

    2. Klicken Sie auf Container bereitstellen > Dienst.

    3. Wählen Sie Überarbeitung aus dem vorhandenen Container-Image bereitstellen.

    4. Klicken Sie unter Container-Image-URL auf Auswählen, um das zuvor erstellte Artifact Registry-Container-Image anzugeben.

    5. Optional können Sie den Dienstnamen ändern, z. B. in my-service.

    6. Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.

    7. Wählen Sie unter Authentifizierung die Option Authentifizierung erforderlich aus.

    8. Wählen Sie für Ingress die Option Intern aus.

    9. Übernehmen Sie alle anderen Standardeinstellungen.

    10. Klicken Sie auf Create (Erstellen) und warten Sie, bis die Bereitstellung abgeschlossen ist.

Eventarc Advanced-Bus erstellen

Ein Bus empfängt Ereignisnachrichten von einer Nachrichtenquelle oder von einem Anbieter und dient als Nachrichten-Router.

Weitere Informationen finden Sie unter Bus zum Weiterleiten von Nachrichten erstellen.

erstellen.
  1. Rufen Sie in der Google Cloud Console die Seite Eventarc > Bus auf.

    Zu „Bus“

  2. Klicken Sie auf Bus erstellen.

  3. Führen Sie auf der Seite Bus erstellen die folgenden Schritte aus:

    1. Geben Sie einen Busnamen ein, z. B. my-bus.
    2. Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.
  4. Übernehmen Sie alle anderen Standardeinstellungen.

  5. Klicken Sie auf Erstellen.

Eventarc Advanced-Registrierung erstellen

Eine Anmeldung bestimmt, welche Nachrichten an ein Ziel weitergeleitet werden, und gibt auch die Pipeline an, mit der ein Ziel für die Ereignisnachrichten konfiguriert wird.

Weitere Informationen finden Sie unter Registrierung zum Empfangen von Ereignissen erstellen.

Wenn Sie die Google Cloud Console verwenden, können Sie eine Registrierung und eine Pipeline gleichzeitig erstellen.

  1. Rufen Sie in der Google Cloud Console die Seite Eventarc > Pipelines auf, um eine Registrierung zu erstellen.

    Zu Pipelines

  2. Klicken Sie auf Pipeline erstellen.

  3. Führen Sie im Bereich Pipelinedetails folgende Schritte aus:

    1. Geben Sie einen Pipelinenamen ein, z. B. my-pipeline.
    2. Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus. Die Pipeline muss in derselben Region wie der Bus erstellt werden.
    3. Übernehmen Sie alle anderen Standardeinstellungen.
    4. Klicken Sie auf Weiter.
  4. Führen Sie im Bereich Registrierungen die folgenden Schritte aus:

    1. Klicken Sie auf Registrierung hinzufügen.
    2. Geben Sie einen Registrierungsnamen ein, z. B. my-enrollment.
    3. Wählen Sie in der Liste Eventarc Advanced-Bus den zuvor erstellten Bus aus.
    4. Geben Sie im Feld CEL-Ausdruck einen Bewertungsausdruck in CEL ein. Beispiel:

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

    5. Klicken Sie auf Fertig.

    6. Klicken Sie auf Weiter.

    7. Klicken Sie im Bereich Ereignisvermittlung noch einmal auf Weiter.

  5. Führen Sie im Bereich Ziel die folgenden Schritte aus:

    1. Wählen Sie in der Liste Zieltyp die Option Cloud Run-Dienst (über HTTP) und dann den zuvor erstellten Cloud Run-Dienst aus.

    2. Wählen Sie in der Liste Netzwerkanhang den zuvor erstellten Netzwerkanhang aus.

    3. Klicken Sie das Kästchen Authentifizierung aktivieren an.

      1. Wählen Sie in der Liste Auth-Header die Option OIDC-Token aus.

      2. Wählen Sie in der Liste Dienstkonto das zuvor erstellte Dienstkonto aus, das den Zieldienst aufruft. Anhand dieser E-Mail-Adresse des Dienstkontos wird das OIDC-Token generiert.

  6. Klicken Sie auf Erstellen.

Ereignisnachricht an den Bus senden

Wenn Sie eine Nachricht direkt auf Ihrem Bus veröffentlichen möchten, können Sie den Befehl gcloud beta eventarc message-buses publish verwenden oder eine Anfrage an die Eventarc Publishing REST API senden. Weitere Informationen finden Sie unter Ereignisse direkt veröffentlichen.

Die Nachricht muss im CloudEvents-Format vorliegen. Das ist eine Spezifikation zum allgemeinen Beschreiben von Ereignisdaten. Das data-Element ist die Nutzlast Ihres Ereignisses. Dieses Feld kann beliebige korrekt formatierte JSON-Daten enthalten. Weitere Informationen zu CloudEvents-Kontextattributen finden Sie unter Ereignisformat.

Mit der gcloud CLI und einem --event-data-Flag sowie anderen Flags für Ereignisattribute können Sie ein Ereignis in Ihrem Eventarc Advanced-Bus veröffentlichen:

gcloud beta 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

Sie können auch ein Ereignis mit der gcloud CLI und einem --json-message-Flag als JSON-Nachricht auf Ihrem Eventarc Advanced-Bus veröffentlichen:

gcloud beta 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"}}'

Nach der Veröffentlichung eines Ereignisses sollten Sie die Meldung „Ereignis wurde veröffentlicht“ erhalten.

Ereignisdaten in den Cloud Run-Logs aufrufen

Nachdem Sie ein Ereignis in Ihrem Eventarc Advanced-Bus veröffentlicht haben, können Sie in den Protokollen Ihres Cloud Run-Dienstes prüfen, ob das Ereignis wie erwartet empfangen wurde.

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud Run.

    Zu Cloud Run

  2. Klicken Sie auf der Seite Dienste auf den Namen Ihres Dienstes.

  3. Klicken Sie auf den Tab Logs.

  4. Sie können die Logeinträge filtern und die Ausgabe zurückgeben. Sie können beispielsweise nach hello-world-data suchen.

  5. Suchen Sie nach einem Logeintrag wie dem Folgenden:

    2025-02-27 08:36:44.350 EST [2025-02-27 13:36:44,352] INFO in server: Body: b'{"key": "hello-world-data"}'
    

Sie haben einen Eventarc Advanced-Bus und eine Anmeldung erstellt, eine Ereignisnachricht auf dem Bus veröffentlicht und das erwartete Ergebnis in den Protokollen 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:

  1. VPC-Subnetz löschen

  2. VPC-Netzwerkzuordnung löschen

  3. Artifact Registry-Repository löschen

  4. Löschen Sie einen Cloud Run-Dienst.

  5. So löschen Sie Eventarc Advanced-Ressourcen:

    1. Registrierung löschen

    2. Pipeline löschen

    3. Bus 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.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Nächste Schritte