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-Tool Knative und ermöglicht Ihnen, Container wahlweise vollständig verwaltet mit Cloud Run oder in einem Google Kubernetes Engine-Cluster mit Cloud Run for Anthos auszuführen.
Eventarc vereinfacht die Verbindung verschiedener Dienste (Cloud Run, Cloud Functions, Workfklows) mit Ereignissen aus einer Vielzahl von Quellen. Damit können Sie ereignisgesteuerte Architekturen erstellen, in denen Mikrodienste lose miteinander verknüpft und verteilt sind. Außerdem übernimmt er die Ereignisaufnahme, -bereitstellung, -sicherheit, -autorisierung und -behebung für Sie, was die Agilität der Entwickler und die Ausfallsicherheit von Anwendungen verbessert.
In diesem Codelab lernen Sie Eventarc kennen. Genauer gesagt, überwachen Sie Ereignisse aus Pub/Sub, Cloud Storage und Cloud-Audit-Logs mit Eventarc und übergeben sie an einen Cloud Run-Dienst.
Lerninhalte
- Vision von Eventarc
- Events in Eventarc entdecken
- Cloud Run-Senke erstellen
- Trigger für Pub/Sub erstellen
- Trigger für Cloud Storage erstellen
- Trigger für Cloud-Audit-Logs erstellen
- Eventarc-UI kennenlernen
2. Vision von Eventarc
Eventarc zielt darauf ab, Ereignisse aus verschiedenen Google-, Google Cloud- und externen Ereignisquellen an Google Cloud-Ereignisziele bereitzustellen.
Google Cloud-Quellen | Ereignisquellen, die Produkte von Google Cloud sind |
Google-Quellen | Ereignisquellen, die Google-Produkte wie Gmail, Hangouts und Android Management umfassen |
Benutzerdefinierte Quellen | Ereignisquellen, die keine Produkte von Google sind und von den Endnutzern selbst erstellt werden |
Drittanbieterquellen | Ereignisquellen, die weder Google gehören noch von Kunden produziert wurden. Dazu gehören beliebte Ereignisquellen wie Check Point CloudGuard, Datadog, ForgeRock, Lacework usw., die Drittanbietern und Partnern gehören und von diesen verwaltet werden. |
Ereignisse werden für die dienstübergreifende Interoperabilität auf das Format CloudEvents v1.0 normalisiert. CloudEvents ist eine anbieterneutrale offene Spezifikation, die Ereignisdaten in gängigen Formaten beschreibt und Interoperabilität zwischen Diensten, Plattformen und Systemen ermöglicht.
3. Einrichtung und Anforderungen
Umgebung für das selbstbestimmte 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 Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird und jederzeit aktualisiert werden kann.
- Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf die Projekt-ID verweisen, die in der Regel als
PROJECT_ID
identifiziert wird. Wenn es dir nicht gefällt, kannst du eine weitere zufällige Projekt-ID generieren. Du kannst aber auch selbst eine andere testen, um zu sehen, ob sie verfügbar ist. Dann ist es „eingefroren“ nachdem das Projekt erstellt wurde. - Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
- Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab sollte ohne großen Aufwand betrieben werden. Wenn Sie Ressourcen beenden möchten, damit über diese Anleitung hinaus keine Kosten anfallen, führen Sie eine Bereinigung durch am Ende des Codelabs. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion von 300$.
Cloud Shell starten
Sie können Google Cloud zwar von Ihrem Laptop aus aus der Ferne bedienen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, 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 dauert nur einen Moment. Wenn er abgeschlossen ist, sollten Sie in etwa Folgendes sehen:
Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud, wodurch die Netzwerkleistung und Authentifizierung erheblich verbessert werden. Sie können alle Aufgaben in diesem Lab ganz einfach in einem Browser erledigen.
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
Stellen Sie einen Cloud Run-Dienst zum Empfangen von Ereignissen bereit. 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 ist.
5. Ereignissuche
Bevor Sie Trigger in Eventarc erstellen, können Sie sich über die Ereignisquellen und die Ereignistypen informieren, die ausgegeben werden können, und wie Trigger konfiguriert werden, um sie zu verarbeiten.
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 ab:
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 jeder Dienst ausgeben kann:
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
Eine Möglichkeit, Ereignisse zu empfangen, ist über Cloud Pub/Sub. Jede Anwendung kann Nachrichten in Pub/Sub veröffentlichen und diese Nachrichten können über Eventarc an Cloud Run gesendet werden.
Einrichtung
Aktivieren Sie die erforderlichen Dienste für Eventarc, bevor Sie Trigger erstellen:
gcloud services enable eventarc.googleapis.com
Sie benötigen auch 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 im bereitgestellten Cloud Run-Dienst veröffentlicht wurden:
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 ein Thema unter dem Cover. Lassen Sie uns das herausfinden und einer Variablen zuweisen:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Verwenden Sie gcloud
, um eine Nachricht für das 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 Bereich „Logs“ Ihrer Cloud Run-Instanz ansehen:
Mit einem vorhandenen Pub/Sub-Thema erstellen
Wenn Sie einen Pub/Sub-Trigger erstellen, erstellt Eventarc standardmäßig ein Thema unter der Decke, das Sie als Transportthema zwischen Ihrer Anwendung und einem Cloud Run-Dienst verwenden können. Dies ist nützlich, um schnell und einfach einen durch Pub/Sub gesicherten Trigger zu erstellen. Manchmal möchten Sie aber vielleicht ein vorhandenes Thema verwenden. Mit Eventarc können Sie ein vorhandenes Pub/Sub-Thema im selben Projekt mit dem gcloud-Flag --transport-topic
angeben.
Erstellen Sie ein Pub/Sub-Thema, das als Transportthema verwendet werden soll, um zu sehen, wie das funktioniert:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Erstellen Sie einen Trigger:
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 auf Ereignisse aus Cloud Storage zu warten.
Einrichtung
Erstellen Sie zuerst einen Bucket, von 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
hinzufügen:
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 zur Erstellung 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
Listen Sie alle 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 prüfen, sollten Sie das empfangene Ereignis sehen:
8. Cloud-Audit-Log-Trigger erstellen
Obwohl der Cloud Storage-Trigger die bessere Möglichkeit ist, auf Cloud Storage-Ereignisse zu warten, erstellen Sie in diesem Schritt einen Cloud-Audit-Log-Trigger, um dies zu erreichen.
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. Klicken Sie in der Liste der Dienste auf das Kästchen 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 zur Erstellung 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
Die Initialisierung von Audit-Log-Triggern dauert eine Weile. 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 die gleiche 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 prüfen, sollten Sie das empfangene Ereignis sehen:
9. Eventarc-UI kennenlernen
In diesem Schritt machen Sie sich mit der Eventarc-UI in der Google Cloud Console vertraut. In der Eventarc-UI können Sie eine Übersicht aller Trigger abrufen, sie bearbeiten und löschen sowie neue Trigger in der Google Cloud Console erstellen.
Rufen Sie den Bereich „Eventarc“ von Google Cloud auf:
Sie sehen die Liste der Trigger, die Sie zuvor erstellt haben:
Wenn Sie auf einen Trigger klicken, können Sie seine Details aufrufen und ihn bearbeiten oder löschen:
Sie können auch einen neuen Trigger erstellen, indem Sie Create trigger
auswählen und Details des Triggers eingeben:
10. Glückwunsch!
Herzlichen Glückwunsch zum Abschluss des Codelabs.
Behandelte Themen
- Vision von Eventarc
- Events in Eventarc entdecken
- Cloud Run-Senke erstellen
- Trigger für Pub/Sub erstellen
- Trigger für Cloud Storage erstellen
- Trigger für Cloud-Audit-Logs erstellen
- Eventarc-UI kennenlernen