Ereignisse veröffentlichen und empfangen, indem Sie einen Bus und eine Anmeldung erstellen (Terraform)
In dieser Kurzanleitung erfahren Sie, wie Sie mit Terraform einen Eventarc Advanced-Bus und eine Anmeldung in Ihrem Google Cloud Projekt erstellen, so dass Sie Ereignisnachrichten veröffentlichen und empfangen können.
Ein Bus fungiert als zentraler Router, der Nachrichten von Ereignisquellen oder von Anbietern veröffentlichte Nachrichten empfängt.
Eine Anmeldung leitet Nachrichten, die vom Bus empfangen werden, über eine Verarbeitungspipeline an ein oder mehrere Ziele weiter.
In dieser Kurzanleitung werden folgende Schritte erläutert:
Einen Ereignisempfängerdienst für Cloud Run bereitstellen
Einen Eventarc Advanced-Bus erstellen
Ereignisse aus Google-Quellen aktivieren
Eine Eventarc Advanced-Pipeline und eine Anmeldung erstellen
Eine Ereignisnachricht an den Bus senden, indem Sie einen Workflow erstellen
Ereignisdaten in den Cloud Run-Logs ansehen
Die meisten Schritte in dieser Kurzanleitung können Sie mit Terraform ausführen. Eine Anleitung für alle Schritte mit der Google Cloud CLI finden Sie unter Ereignisse aus einer Google-Quelle veröffentlichen.
Weitere Informationen zur Verwendung von Terraform finden Sie in der Terraform- Google CloudDokumentation.
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.
- Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Google Cloud-Nutzer sind, erstellen Sie ein Konto, um zu sehen, wie sich unsere Produkte in realen Szenarien schlagen. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Terraform ist in die Cloud Shell-Umgebung integriert. Sie können Cloud Shell verwenden, um Ihre Terraform-Ressourcen bereitzustellen, ohne Terraform installieren zu müssen.
Erforderliche Rollen
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:
- 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) - Dienstkontoadministrator (
roles/iam.serviceAccountAdmin) - Dienstkontonutzer (
roles/iam.serviceAccountUser) - 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.
Terraform-Bereitstellung vorbereiten
Bevor Sie Terraform-Ressourcen bereitstellen, müssen Sie eine Terraform-Konfigurationsdatei erstellen. In einer Terraform-Konfigurationsdatei können Sie mit der Terraform-Syntax den gewünschten Endzustand für Ihre Infrastruktur definieren.
Legen Sie in Cloud Shell das Standard Google Cloud projekt fest, auf das Sie Ihre Terraform-Konfiguration anwenden möchten. Sie müssen diesen Befehl nur einmal pro Projekt ausführen und können ihn in einem beliebigen Verzeichnis ausführen:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch die ID Ihres Google Cloud Projekts.Beachten Sie, dass Umgebungsvariablen überschrieben werden, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch Stammmodul genannt). Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis:
mkdir DIRECTORY && cd DIRECTORY && touch main.tf
Ersetzen Sie
DIRECTORYdurch den Namen Ihres Terraform-Verzeichnisses.Der Dateiname muss die
.tfErweiterung haben. In dieser Kurzanleitung ist die Konfigurationsdatei beispielsweisemain.tf.
Terraform-Konfiguration definieren
Kopieren Sie die folgenden Terraform-Code-Snippets in Ihre Datei main.tf. Wenn Sie das gesamte Codebeispiel von GitHub kopieren möchten, klicken Sie rechts oben in einem Code-Snippet auf
>
Auf GitHub ansehen.
APIs aktivieren
Verwenden Sie die
google_project_service
Terraform-Ressource, um die APIs zu aktivieren, die zum Anwenden der Terraform
Konfiguration erforderlich sind:
Dienstkonto erstellen
Erstellen Sie zu Testzwecken ein dediziertes Dienstkonto und weisen Sie ihm bestimmte IAM-Rollen zu.
Verwenden Sie die
google_service_account
und google_project_iam_member
Terraform-Ressourcen, um das Dienstkonto zu erstellen und ihm die erforderlichen
Rollen zum Veröffentlichen und Empfangen von Ereignissen zuzuweisen:
Ereignisziel erstellen
Verwenden Sie die
google_cloud_run_v2_service
Terraform-Ressource, um einen
Cloud Run-Dienst
als Ereignisziel zu erstellen, in dem der Inhalt eines Ereignisses protokolliert wird:
Eventarc Advanced-Bus erstellen
Ein Bus empfängt Ereignisnachrichten aus einer Nachrichtenquelle oder von einem Anbieter veröffentlichte Nachrichten und fungiert als Nachrichtenrouter. Weitere Informationen finden Sie unter Bus erstellen, um Nachrichten weiterzuleiten.
Verwenden Sie die
google_eventarc_message_bus
Terraform-Ressource, um einen Eventarc Advanced-Bus zu erstellen:
Ereignisse aus Google-Quellen aktivieren
Wenn Sie Ereignisse aus Google-Quellen veröffentlichen möchten, müssen Sie eine
GoogleApiSource
Ressource erstellen, die ein Abo für Google API-Ereignisse für einen bestimmten
Eventarc Advanced-Bus darstellt. Weitere Informationen finden Sie unter
Ereignisse aus Google-Quellen veröffentlichen.
Verwenden Sie die
google_eventarc_google_api_source
Terraform-Ressource, um Ereignisse aus Google-Quellen zu aktivieren:
Alle unterstützten Google-Ereignistypen die direkt von einer Google-Quelle gesendet werden, werden jetzt erfasst und in Ihrem Bus veröffentlicht.
Eventarc Advanced-Pipeline erstellen
In einer Pipeline können Sie ein Ziel konfigurieren und außerdem alle übereinstimmenden Ereignisse vor ihrer Übermittlung an das Ziel umwandeln.
Verwenden Sie die
google_eventarc_pipeline
Terraform-Ressource, um eine Pipeline zu erstellen:
Das Ereignisziel ist die vollständig qualifizierte URL Ihres Cloud Run
Dienstes, z. B.
https://SERVICE_NAME-abcdef-uc.a.run.app. Die E-Mail-Adresse des Dienst
kontos wird verwendet, um ein
OIDC-Token zu generieren.
Eventarc Advanced-Anmeldung 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 Anmeldung erstellen, um Ereignisse zu empfangen.
Verwenden Sie die
google_eventarc_enrollment
Terraform-Ressource, um eine Anmeldung zu erstellen:
Der Abgleichausdruck für die Anmeldung verwendet die Common Expression Language (CEL) , um Ereignisnachrichten zu veröffentlichen, wenn ein Workflow erstellt wird. In einem späteren Schritt, werden Sie einen Workflow erstellen.
Terraform-Konfiguration anwenden
Verwenden Sie die Terraform-Befehlszeile, um Infrastruktur basierend auf der Konfigurationsdatei bereitzustellen. Weitere Informationen finden Sie unter Grundlegende Terraform-Befehle.
Initialisieren Sie Terraform. Sie müssen dies nur einmal pro Verzeichnis tun.
terraform init
Fügen Sie optional die Option
-upgradeein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie an der Eingabeaufforderung
yesein:terraform apply
Normalerweise wenden Sie die gesamte Konfiguration auf einmal an. Sie können aber auch eine bestimmte Ressource auswählen. Beispiel:
terraform apply -target="google_eventarc_message_bus.default"
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
Ereignisnachricht an den Bus senden, indem Sie einen Workflow erstellen
Workflows ist eine vollständig verwaltete Orchestrierungsplattform, die Dienste in einer von Ihnen definierten Reihenfolge ausführt: ein Workflow. Erstellen Sie einen Workflow, um einen unterstützten Ereignistyp aus einer Google-Quelle zu generieren.
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:
main: params: [input] steps: - checkSearchTermInInput: switch: - condition: '${"searchTerm" in input}' assign: - searchTerm: '${input.searchTerm}' next: readWikipedia - getLocation: call: sys.get_env args: name: GOOGLE_CLOUD_LOCATION result: location - setFromCallResult: assign: - searchTerm: '${text.split(location, "-")[0]}' - readWikipedia: call: http.get args: url: 'https://en.wikipedia.org/w/api.php' query: action: opensearch search: '${searchTerm}' result: wikiResult - returnOutput: return: '${wikiResult.body[1]}'Dieser Workflow übergibt die Region, in der der Workflow bereitgestellt wird, an die Wikipedia API und gibt eine Liste von ähnlichen Wikipedia-Artikeln zurück.
Stellen Sie den Workflow mit dem
gcloud workflows deployBefehl bereit:gcloud workflows deploy example-workflow --source=myWorkflow.yaml \ --service-account=eventarc-advanced-sa@PROJECT_ID.iam.gserviceaccount.com \ --location=us-central1
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.
Filtern Sie die Logeinträge, die von Ihrem Dienst erstellt wurden:
gcloud logging read 'jsonPayload.message: "Received event of type google.cloud.workflows.workflow.v1.created."'Suchen Sie nach einem Logeintrag wie dem Folgenden:
message: 'Received event of type google.cloud.workflows.workflow.v1.created. Event data: {"@type":"type.googleapis.com/google.events.cloud.workflows.v1.WorkflowEventData","payload":{"name":"projects/PROJECT_ID/locations/us-central1/workflows/example-workflow","state":"ACTIVE"...
Sie haben einen Eventarc Advanced-Bus und eine Anmeldung erstellt, die Veröffentlichung von Ereignissen aus Google-Quellen aktiviert, einen Workflow erstellt, um einen unterstützten Ereignistyp von einem Google-Anbieter zu generieren, und dann das erwartete Ergebnis in den Logs des Ereignisempfängerdienstes überprüft.
Bereinigen
Entfernen Sie Ressourcen, die zuvor mit Ihrer Terraform-Konfiguration angewendet wurden, indem Sie den folgenden
Befehl ausführen und an der Eingabeaufforderung yes eingeben:
terraform destroy
Sie können auch 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.
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Herunterfahren), um das Projekt zu löschen.