1. Einführung

Mit Cloud Run können Sie zustandslose Container in einer vollständig verwalteten Umgebung ausführen. Es basiert auf dem Open-Source-Projekt Knative. Damit können Sie Container wahlweise vollständig verwaltet mit Cloud Run oder in Ihrem Google Kubernetes Engine-Cluster mit Cloud Run for Anthos ausführen.

Mit Eventarc lassen sich verschiedene Dienste (Cloud Run, Cloud Functions, Workflows) ganz einfach mit Ereignissen aus verschiedenen Quellen verbinden. Damit können Sie ereignisgesteuerte Architekturen erstellen, in denen Mikrodienste lose gekoppelt und verteilt sind. Außerdem werden die Aufnahme, Bereitstellung, Sicherheit, Autorisierung und Fehlerbehandlung von Ereignissen für Sie übernommen, was die Agilität von Entwicklern und die Ausfallsicherheit von Anwendungen verbessert.
In diesem Codelab erfahren Sie mehr über Eventarc. Genauer gesagt, werden Sie mit Eventarc Ereignisse aus Pub/Sub, Cloud Storage und Cloud-Audit-Logs überwachen und an einen Cloud Run-Dienst übergeben.
Lerninhalte
- Vision von Eventarc
- Ereignisse in Eventarc erkennen
- Cloud Run-Senken erstellen
- Trigger für Pub/Sub erstellen
- Trigger für Cloud Storage erstellen
- Trigger für Cloud-Audit-Logs erstellen
- Eventarc-UI ansehen
2. Vision von Eventarc
Eventarc soll Ereignisse aus verschiedenen Google-, Google Cloud- und Drittanbieter-Ereignisquellen an Google Cloud-Ereignisziele senden.

Google Cloud-Quellen | Ereignisquellen, die Google Cloud-Produkte sind |
Google-Quellen | Ereignisquellen, die Google-Produkte wie Gmail, Hangouts und Android Management sind |
Benutzerdefinierte Quellen | Ereignisquellen, die keine Google-Produkte sind und von Endnutzern selbst erstellt werden |
Drittanbieterquellen | Ereignisquellen, die weder Google gehören noch vom Kunden erstellt wurden. Dazu gehören beliebte Ereignisquellen wie Check Point CloudGuard, Datadog, ForgeRock und Lacework, die von Drittanbietern und Partnern verwaltet werden. |
Ereignisse werden für die dienstübergreifende Interoperabilität im CloudEvents-Format v1.0 normalisiert. CloudEvents ist eine anbieterneutrale offene Spezifikation, die Ereignisdaten in gängigen Formaten beschreibt und die Interoperabilität zwischen Diensten, Plattformen und Systemen ermöglicht.
3. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.



- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird und den Sie jederzeit aktualisieren können.
- Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich (kann nach der Festlegung nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser aussieht. In den meisten Codelabs müssen Sie auf die Projekt-ID verweisen (die in der Regel als
PROJECT_IDangegeben wird). Wenn Ihnen die ID nicht gefällt, können Sie eine andere zufällige ID generieren oder eine eigene ID ausprobieren und sehen, ob sie verfügbar ist. Nachdem das Projekt erstellt wurde, wird es „eingefroren“. - Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs verwenden zu können. Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Wenn Sie Ressourcen herunterfahren möchten, damit nach Abschluss dieses Codelabs keine Gebühren anfallen, folgen Sie den Bereinigungsanweisungen am Ende des Codelabs. Neue Nutzer von Google Cloud kommen für das Programm für kostenlose Testversionen mit einem Guthaben von 300$ infrage.
Cloud Shell starten
Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.
Klicken Sie in der GCP Console oben rechts in der Symbolleiste auf das Cloud Shell-Symbol:

Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Augenblicke dauern. Anschließend sehen Sie in etwa Folgendes:

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Für dieses Lab benötigen Sie lediglich einen Browser.
Hinweis
Prüfen Sie in Cloud Shell, ob Ihre Projekt-ID eingerichtet ist:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. Cloud Run-Dienst bereitstellen
Cloud Run-Dienst zum Empfangen von Ereignissen bereitstellen Sie stellen den Hello-Container von Cloud Run bereit, der den Inhalt von CloudEvents protokolliert.
Aktivieren Sie zuerst die erforderlichen Dienste für Cloud Run:
gcloud services enable run.googleapis.com
Stellen Sie den Hello-Container in Cloud Run bereit:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
Bei Erfolg wird in der Befehlszeile die Dienst-URL angezeigt. Sie können die Dienst-URL in einem beliebigen Browserfenster öffnen, um zu prüfen, ob der Dienst jetzt bereitgestellt wurde.
5. Ereignisse entdecken
Bevor Sie Trigger in Eventarc erstellen, können Sie herausfinden, welche Ereignisquellen es gibt, welche Arten von Ereignissen sie ausgeben können und wie Sie Trigger konfigurieren, um sie zu nutzen.
So rufen Sie die Liste der verschiedenen Ereignistypen auf:
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
So rufen Sie weitere Informationen zu den einzelnen Ereignistypen auf:
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
So rufen Sie die Liste der Dienste auf, die einen bestimmten Ereignistyp ausgeben:
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
So rufen Sie die Liste der Methodennamen (Unterereignisse) auf, die von den einzelnen Diensten ausgegeben werden können:
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
6. Pub/Sub-Trigger erstellen
Cloud Pub/Sub bietet eine Möglichkeit, Ereignisse zu empfangen. Jede Anwendung kann Nachrichten in Pub/Sub veröffentlichen. Diese Nachrichten können über Eventarc an Cloud Run übermittelt werden.
Einrichtung
Bevor Sie Trigger erstellen, müssen Sie die erforderlichen Dienste für Eventarc aktivieren:
gcloud services enable eventarc.googleapis.com
Außerdem benötigen Sie ein Dienstkonto, das von Triggern verwendet wird. Erstellen Sie ein Dienstkonto:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
Erstellen
Erstellen Sie einen Trigger, um Ereignisse zu filtern, die im Pub/Sub-Thema für Ihren bereitgestellten Cloud Run-Dienst veröffentlicht werden:
TRIGGER_NAME=trigger-pubsub gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Test
Der Pub/Sub-Trigger erstellt im Hintergrund ein Thema. Wir ermitteln ihn und weisen ihn einer Variablen zu:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Verwenden Sie gcloud, um eine Nachricht zum Thema zu veröffentlichen:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
Der Cloud Run-Dienst protokolliert den Text der eingehenden Nachricht. Sie können dies im Abschnitt „Logs“ Ihrer Cloud Run-Instanz sehen:

Mit einem vorhandenen Pub/Sub-Thema erstellen
Wenn Sie einen Pub/Sub-Trigger erstellen, erstellt Eventarc standardmäßig ein Thema, das Sie als Transportthema zwischen Ihrer Anwendung und einem Cloud Run-Dienst verwenden können. Das ist nützlich, um schnell und einfach einen Pub/Sub-basierten Trigger zu erstellen. Manchmal möchten Sie aber vielleicht ein vorhandenes Thema verwenden. Mit Eventarc können Sie mit dem --transport-topic-gcloud-Flag ein vorhandenes Pub/Sub-Thema im selben Projekt angeben.
Erstellen Sie ein Pub/Sub-Thema, das als Transportthema verwendet werden soll:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Trigger erstellen:
TRIGGER_NAME=trigger-pubsub-existing gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Sie können den Trigger testen, indem Sie eine Nachricht an das Thema senden:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. Cloud Storage-Trigger erstellen
In diesem Schritt erstellen Sie einen Trigger, um Ereignisse aus Cloud Storage zu überwachen.
Einrichtung
Erstellen Sie zuerst einen Bucket, in dem Ereignisse empfangen werden sollen:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
Weisen Sie die Rolle eventarc.eventReceiver zu, damit das Dienstkonto in einem Cloud Storage-Trigger verwendet werden kann:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Außerdem müssen Sie dem Cloud Storage-Dienstkonto für Cloud Storage-Trigger die Rolle pubsub.publisher zuweisen:
SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$SERVICE_ACCOUNT_STORAGE \
--role roles/pubsub.publisher
Erstellen
Erstellen Sie einen Trigger, um Ereignisse zum Erstellen neuer Dateien aus dem Bucket an Ihren Dienst weiterzuleiten:
TRIGGER_NAME=trigger-storage gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Test
Rufen Sie eine Liste aller Trigger auf, um zu prüfen, ob der Trigger erfolgreich erstellt wurde:
gcloud eventarc triggers list
Laden Sie eine Datei in den Cloud Storage-Bucket hoch:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Wenn Sie die Logs des Cloud Run-Dienstes in der Cloud Console aufrufen, sollten Sie das empfangene Ereignis sehen:

8. Cloud-Audit-Log-Trigger erstellen
Obwohl Cloud Storage-Trigger die bessere Methode zum Erfassen von Cloud Storage-Ereignissen sind, erstellen Sie in diesem Schritt einen Cloud-Audit-Log-Trigger, um dasselbe zu tun.
Einrichtung
Damit Sie Ereignisse von einem Dienst erhalten, müssen Sie Cloud-Audit-Logs aktivieren. Wählen Sie in der Cloud Console im Menü oben links IAM & Admin und Audit Logs aus. Setzen Sie in der Liste der Dienste ein Häkchen bei Google Cloud Storage:

Achten Sie darauf, dass auf der rechten Seite Admin, Read und Write ausgewählt sind, und klicken Sie auf Save:

Erstellen
Erstellen Sie einen Trigger, um Ereignisse zum Erstellen neuer Dateien aus dem Bucket an Ihren Dienst weiterzuleiten:
TRIGGER_NAME=trigger-auditlog-storage gcloud eventarc triggers create $TRIGGER_NAME\ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Test
Es dauert eine Weile, bis Audit-Log-Trigger initialisiert sind. Sie können prüfen, ob der Trigger erstellt wurde, indem Sie alle Trigger auflisten:
gcloud eventarc triggers list
Das Feld ACTIVE sollte Yes lauten:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
Laden Sie dieselbe Datei wie zuvor in den Cloud Storage-Bucket hoch:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Wenn Sie die Logs des Cloud Run-Dienstes in der Cloud Console aufrufen, sollten Sie das empfangene Ereignis sehen:

9. Eventarc-UI ansehen
In diesem Schritt machen Sie sich mit der Eventarc-Benutzeroberfläche in der Google Cloud Console vertraut. In der Eventarc-Benutzeroberfläche können Sie sich einen Überblick über alle Trigger verschaffen, sie bearbeiten und löschen sowie neue Trigger über die Google Cloud Console erstellen.
Rufen Sie in Google Cloud den Bereich „Eventarc“ auf:

Sie sehen die Liste der Trigger, die Sie zuvor erstellt haben:

Wenn Sie auf einen Trigger klicken, können Sie die Details des Triggers aufrufen, ihn bearbeiten oder löschen:

Sie können auch einen neuen Trigger erstellen, indem Sie Create trigger auswählen und die Details des Triggers eingeben:

10. Glückwunsch!
Herzlichen Glückwunsch zum Abschluss des Codelabs.
Behandelte Themen
- Vision von Eventarc
- Ereignisse in Eventarc erkennen
- Cloud Run-Senken erstellen
- Trigger für Pub/Sub erstellen
- Trigger für Cloud Storage erstellen
- Trigger für Cloud-Audit-Logs erstellen
- Eventarc-UI ansehen