Ereignisse veröffentlichen und empfangen, indem Sie einen Bus und eine Registrierung erstellen (Konsole)
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:
Erstellen Sie ein Subnetz und aktivieren Sie den privater Google-Zugriff.
Netzwerkanhang erstellen
Erstellen Sie ein Artifact Registry-Standard-Repository.
einen Ereignisempfängerdienst für Cloud Run bereitstellen
Eventarc Advanced-Bus erstellen
Eventarc Advanced-Registrierung erstellen
Veröffentlichen Sie eine Ereignisnachricht im Bus.
Rufen Sie die Ereignisdaten in den Cloud Run-Logs auf.
Die meisten Schritte in dieser Kurzanleitung können Sie mit der Google Cloud -Konsole ausführen. Wenn Sie alle Schritte mit der Google Cloud CLI ausführen möchten, lesen Sie 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.
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Build, Cloud Run, Compute Engine, and Eventarc APIs.
- Für einige Schritte in dieser Kurzanleitung müssen Sie die gcloud CLI verwenden:
- 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:
- 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. - 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=us-central1
- Richten Sie die gcloud CLI in einer der folgenden Entwicklungsumgebungen ein:
-
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 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 Build-Bearbeiter (
- Weisen Sie dem Compute Engine-Standarddienstkonto Rollen für das Projekt zu. Diese Rollen sind erforderlich, um Ihr Container-Image zu erstellen und bereitzustellen.
- Rufen Sie in der Google Cloud Console die Seite IAM auf.
Wenn Sie Rollen für das Dienstkonto ändern möchten, dem bereits Rollen für die Ressource zugewiesen sind, suchen Sie die Zeile mit dem Hauptkonto.
oder
Wenn Sie dem Dienstkonto Rollen zuweisen möchten, wenn es keine Rollen für die Ressource hat, klicken Sie auf
Zugriff gewähren und geben Sie dann die Kennung für das Compute Engine-Standarddienstkonto in folgender Form ein:PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ersetzen Sie
PROJECT_NUMBER
durch die Projektnummer Ihres Google Cloud-Projekts. Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud -Konsole.- Klicken Sie in der entsprechenden Zeile auf Hauptkonto bearbeiten.
- Klicken Sie entweder auf Rolle hinzufügen oder auf Weitere Rolle hinzufügen.
- Filtern Sie in der Liste Rolle auswählen nach den folgenden Rollen und wählen Sie sie aus:
- Artifact Registry Writer: zum Hochladen von Artifact Registry-Artefakten
- Logs Writer: zum Schreiben von Logs in Cloud Logging
- Storage Object User: für den Zugriff auf Cloud Storage-Objekte
- Klicken Sie auf Speichern.
- Rufen Sie in der Google Cloud Console die Seite IAM auf.
- Standardmäßig können nur Projektinhaber, Projektbearbeiter sowie Cloud Run-Administratoren und -Aufrufer Cloud Run-Dienste aufrufen. Um die Authentifizierung einzurichten, weisen Sie einem Dienstkonto die Rolle „Cloud Run-Aufrufer“ für Ihr Google Cloud -Projekt zu. Zu Testzwecken hängen Sie dieses Dienstkonto an eine Eventarc Advanced-Pipeline an, um die Identität der Pipeline darzustellen.
- Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.
- Klicken Sie auf Dienstkonto erstellen.
- Geben Sie im Feld Name des Dienstkontos einen Namen ein.
- Klicken Sie auf Erstellen und fortfahren.
- Filtern Sie in der Liste Rolle auswählen nach der Rolle Cloud Run Invoker und wählen Sie sie aus.
- Klicken Sie auf Fertig.
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.
- Erteilen Sie
allUsers
die Berechtigung, den nicht authentifizierten Zugriff zuzulassen.
Weitere Informationen finden Sie unter Zugriffssteuerung für Cloud Run.
- Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.
Subnetz erstellen und privater Google-Zugriff aktivieren
Sofern Sie keine Organisationsrichtlinie erstellen, die dies verbietet, beginnen neue Google CloudProjekte mit einem Standard-VPC-Netzwerk (einem VPC-Netzwerk im automatischen Modus), das in jeder Region ein Subnetzwerk (Subnetz) hat. Subnetzen sind IP-Adressbereiche zugeordnet.
Da Sie Nachrichten über eine DNS-Adresse an ein Cloud Run-Ziel weiterleiten, müssen Sie den privaten Google-Zugriff für das im Netzwerkanhang verwendete 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 privater Google-Zugriff:
Rufen Sie in der Google Cloud -Console die Seite VPC-Netzwerke auf.
Klicken Sie in der Liste der VPC-Netzwerke auf den Namen Standard.
Klicken Sie auf der Seite VPC-Netzwerkdetails auf den Tab Subnetze.
Klicken Sie auf
Subnetz hinzufügen.Führen Sie im Bereich Subnetz hinzufügen die folgenden Schritte aus:
- Geben Sie einen Namen ein, z. B.
my-subnet
. - Wählen Sie in der Liste Region die Option us-central1 aus.
- Geben Sie einen primären IPv4-Bereich für das Subnetz ein, z. B.
10.8.0.0/24
. - Wählen Sie für Privater Google-Zugriff die Option Ein aus.
- Übernehmen Sie alle anderen Standardeinstellungen.
- Klicken Sie auf Hinzufügen.
- Geben Sie einen Namen ein, z. B.
IP-Bereiche von Subnetzen müssen eindeutig sein und dürfen sich innerhalb eines VPC-Netzwerks und eines Peering-VPC-Netzwerk nicht überschneiden. Weitere Informationen zu Subnetztypen und gültigen Subnetzbereichen finden Sie unter Subnetze.
Netzwerkanhang erstellen
Ein Netzwerkanhang ist eine Ressource, mit der ein Produzenten-VPC-Netzwerk 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, die den Endpunkt des Ereignisziels enthält, und der automatisch Verbindungen von jeder Private Service Connect-Schnittstelle akzeptiert, die auf den Netzwerkanhang verweist:
Rufen Sie in der Google Cloud Console Private Service Connect auf.
Klicken Sie auf den Tab Netzwerkverbindungen.
Klicken Sie auf
Netzwerkanhang erstellen.Geben Sie einen Namen ein, z. B.
my-network-attachment
.Wählen Sie in der Liste Netzwerk die Option Standard aus.
Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.
Wählen Sie in der Liste Subnetzwerk das zuvor erstellte Subnetz aus.
Klicken Sie auf Verbindungen für alle Projekte automatisch akzeptieren.
Klicken Sie auf Netzwerkanhang erstellen.
Artifact Registry-Standard-Repository erstellen
Erstellen Sie ein Artifact Registry-Standard-Repository zum Speichern des Container-Images.
Rufen Sie in der Google Cloud Console die Seite Repositories auf.
Klicken Sie auf
Repository erstellen.Geben Sie einen Namen ein, z. B.
my-repo
.Repository-Namen können für jeden Repository-Speicherort in einem Projekt nur einmal vorkommen.
Wählen Sie für das Format des Repositorys Docker aus.
Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.
Übernehmen Sie alle anderen Standardeinstellungen.
Klicken Sie auf Erstellen.
Ereignisempfängerdienst für 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. Die Dienst-URL ist nicht direkt zugänglich, da der Dienst nur authentifizierte Aufrufe zulässt.
Klonen Sie das GitHub-Repository in Ihrem Terminal:
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
Ersetzen Sie dabei
REPOSITORY
durch den Namen Ihres Artifact Registry-Repositorys.Stellen Sie das Container-Image in Cloud Run bereit:
Rufen Sie in der Google Cloud -Console die Seite Cloud Run auf.
Klicken Sie auf > Dienst.
Container bereitstellenWählen Sie Überarbeitung aus dem vorhandenen Container-Image bereitstellen.
Klicken Sie für die Container-Image-URL auf Auswählen, um das zuvor erstellte Artifact Registry-Container-Image anzugeben.
Optional können Sie den Dienstnamen ändern, z. B. in
my-service
.Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.
Wählen Sie unter Authentifizierung die Option Authentifizierung erforderlich aus.
Wählen Sie für Eingehend die Option Intern aus.
Übernehmen Sie alle anderen Standardeinstellungen.
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 fungiert als Nachrichtenrouter.
Weitere Informationen finden Sie unter Bus zum Weiterleiten von Nachrichten erstellen.
Rufen Sie in der Google Cloud Console die Seite Eventarc > Bus auf.
Klicken Sie auf
Bus erstellen.Führen Sie auf der Seite Bus erstellen die folgenden Schritte aus:
- Geben Sie einen Busname ein, z. B.
my-bus
. - Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus.
- Geben Sie einen Busname ein, z. B.
Übernehmen Sie alle anderen Standardeinstellungen.
Klicken Sie auf Erstellen.
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 Google Cloud -Konsole verwenden, können Sie gleichzeitig eine Registrierung und eine Pipeline erstellen.
Rufen Sie zum Erstellen einer Registrierung in der Google Cloud Console die Seite Eventarc > Pipelines auf.
Klicken Sie auf
Pipeline erstellen.Führen Sie im Bereich Piplinedetails folgende Schritte aus:
- Geben Sie einen Pipelinenamen ein, z. B.
my-pipeline
. - Wählen Sie in der Liste Region die Option us-central1 (Iowa) aus. Die Pipeline muss in derselben Region wie der Bus erstellt werden.
- Übernehmen Sie alle anderen Standardeinstellungen.
- Klicken Sie auf Weiter.
- Geben Sie einen Pipelinenamen ein, z. B.
Führen Sie im Bereich Registrierungen folgende Schritte aus:
- Klicken Sie auf Registrierung hinzufügen.
- Geben Sie einen Registrierungsnamen ein, z. B.
my-enrollment
. - Wählen Sie in der Liste Eventarc Advanced-Bus den zuvor erstellten Bus aus.
Geben Sie im Feld CEL-Ausdruck einen Auswertungsausdruck in CEL ein. Beispiel:
message.type == "hello-world-type"
Klicken Sie auf Fertig.
Klicken Sie auf Weiter.
Klicken Sie im Bereich Vermittlung von Ereignissen noch einmal auf Weiter.
Führen Sie im Bereich Ziel folgende Schritte aus:
Wählen Sie in der Liste Zieltyp die Option Cloud Run-Dienst (über HTTP) und dann den Cloud Run-Dienst aus, den Sie zuvor erstellt haben.
Wählen Sie in der Liste Netzwerkanhang den zuvor erstellten Netzwerkanhang aus.
Klicken Sie das Kästchen Authentifizierung aktivieren an.
Wählen Sie in der Liste Auth-Header die Option OIDC-Token aus.
Wählen Sie in der Liste Dienstkonto das Dienstkonto aus, das Sie zuvor erstellt haben und mit dem der Zieldienst aufgerufen wird. Mit dieser Dienstkonto-E-Mail-Adresse wird das OIDC-Token generiert.
Klicken Sie auf Erstellen.
Ereignisnachricht im Bus veröffentlichen
Wenn Sie eine Nachricht direkt in 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, 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.
Veröffentlichen Sie ein Ereignis in Ihrem Eventarc Advanced-Bus mit der gcloud CLI und einem --event-data
-Flag sowie anderen Attribut-Flags für Ereignisse:
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
Alternativ können Sie ein Ereignis als JSON-Nachricht mit der gcloud CLI und dem Flag --json-message
in 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"}}'
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, können Sie in den Logs Ihres Cloud Run-Dienstes prüfen, ob das Ereignis wie erwartet empfangen wurde.
Rufen Sie in der Google Cloud -Console die Seite Cloud Run auf.
Klicken Sie auf der Seite Dienste auf den Namen Ihres Dienstes.
Klicken Sie auf den Tab Logs.
Sie können die Logeinträge filtern und die Ausgabe zurückgeben. Sie können beispielsweise nach
hello-world-data
suchen.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 im Bus veröffentlicht und 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:
Eventarc Advanced-Ressourcen löschen:
Alternativ können Sie Ihr Google Cloud -Projekt löschen, um wiederkehrende Gebühren zu vermeiden. Durch das Löschen des Google Cloud -Projekts wird die Abrechnung für alle in diesem Projekt verwendeten Ressourcen beendet.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.