1. Einführung
Mit Eventarc lassen sich verschiedene Dienste (Cloud Run, Kubernetes, Workflows) ganz einfach mit Ereignissen aus einer Vielzahl von 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. Eine Einführung in Eventarc finden Sie im Codelab zum Auslösen von Cloud Run mit Ereignissen aus Eventarc.
In diesem Codelab verwenden Sie Eventarc, um Ereignisse aus Pub/Sub, Cloud Storage und Cloud-Audit-Logs zu lesen und an einen Kubernetes-Dienst zu übergeben, der in Google Kubernetes Engine (GKE) ausgeführt wird.
Lerninhalte
- GKE-Cluster erstellen
- GKE-Dienst als Ereignissenke erstellen
- Pub/Sub-Trigger erstellen
- Cloud Storage-Trigger erstellen
- Erstellen Sie einen Cloud-Audit-Log-Trigger.
2. Einrichtung und Anforderungen
Einrichtung der Umgebung im eigenen Tempo
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eins 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. Sie können ihn jederzeit aktualisieren.
- Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und kann nach dem Festlegen nicht mehr geändert werden. In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf die Projekt-ID verweisen (sie wird in der Regel als
PROJECT_ID
angegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie es mit einem eigenen Namen versuchen und sehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen. - Zur Information: 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 zu verwenden. Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Wenn Sie Ressourcen herunterfahren möchten, damit Ihnen nach Abschluss dieser Anleitung keine Kosten mehr in Rechnung gestellt werden, können Sie die von Ihnen erstellten Ressourcen oder das gesamte Projekt löschen. Neuen Nutzern von Google Cloud steht das Programm Kostenlose Testversion mit einem Guthaben von 300$ zur Verfügung.
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 Google Cloud Console in der Symbolleiste oben rechts auf das Cloud Shell-Symbol:
Die Bereitstellung und Verbindung mit der Umgebung dauert nur einen Moment. 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. Alle Aufgaben in diesem Codelab können in einem Browser ausgeführt werden. Sie müssen nichts installieren.
Hinweis
Prüfen Sie in Cloud Shell, ob Ihre Projekt-ID eingerichtet ist:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
3. GKE-Cluster erstellen
Aktivieren Sie zuerst die erforderlichen Dienste für GKE:
gcloud services enable container.googleapis.com
Autopilot-GKE-Cluster erstellen:
CLUSTER_NAME=eventarc-cluster REGION=us-central1 gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Warten Sie, bis die Clustererstellung abgeschlossen ist, bevor Sie mit dem nächsten Schritt fortfahren.
4. GKE-Dienst bereitstellen
Bevor Sie einen Dienst bereitstellen, rufen Sie Anmeldedaten für die Authentifizierung ab, um mit dem Cluster zu interagieren:kubectl
gcloud container clusters get-credentials $CLUSTER_NAME \ --region $REGION
Stellen Sie als Nächstes den Hello-Container von Cloud Run als Kubernetes-Bereitstellung in GKE bereit. Dieser Dienst protokolliert empfangene HTTP-Anfragen und CloudEvents:
SERVICE_NAME=hello-gke kubectl create deployment $SERVICE_NAME \ --image=gcr.io/cloudrun/hello
Geben Sie das Deployment als internen Kubernetes-Dienst frei. Dadurch wird ein Dienst mit einer stabilen IP-Adresse erstellt, auf die innerhalb des Clusters zugegriffen werden kann:
kubectl expose deployment $SERVICE_NAME \ --type ClusterIP --port 80 --target-port 8080
Bevor Sie mit dem nächsten Schritt fortfahren, prüfen Sie, ob der Pod ausgeführt wird:
kubectl get pods NAME READY STATUS hello-gke-df6469d4b-5vv22 1/1 Running
Sie können sich auch den Dienst ansehen:
kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP hello-gke LoadBalancer 10.51.1.26 <none>
5. Eventarc einrichten
In diesem Schritt führen Sie die Schritte zum Einrichten von Eventarc und zum Initialisieren von Eventarc-GKE-Zielen aus.
Aktivieren Sie zuerst die erforderlichen Dienste für Eventarc und Eventarc-GKE-Ziele:
gcloud services enable eventarc.googleapis.com \ cloudresourcemanager.googleapis.com
Aktivieren Sie als Nächstes Eventarc, um GKE-Cluster zu verwalten:
gcloud eventarc gke-destinations init
Eventarc erstellt für jeden Trigger, der auf einen GKE-Dienst abzielt, einen separaten Event Forwarder-Pod. Für Änderungen am Cluster sind explizite Berechtigungen erforderlich. Dazu werden einem speziellen Dienstkonto Berechtigungen zum Verwalten von Ressourcen im Cluster gewährt. Dies muss einmal pro Google Cloud-Projekt durchgeführt werden.
6. Ereignisse entdecken
Bevor Sie Trigger 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.
Eine Liste der von Eventarc unterstützten Ereignisse finden Sie auf der Dokumentationsseite.Sie können die Ereignisse auch mit gcloud
untersuchen.
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 erhalten Sie weitere Informationen zu den einzelnen Ereignistypen:
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
7. Pub/Sub-Trigger erstellen
Eine Möglichkeit, Ereignisse zu empfangen, ist über Pub/Sub. Jede Anwendung kann Nachrichten in Pub/Sub veröffentlichen und diese Nachrichten können über Eventarc an Dienste gesendet werden.
Einrichtung
Bevor Sie Trigger erstellen können, benötigen Sie ein Dienstkonto, das von Triggern verwendet wird.
Erstellen Sie ein Dienstkonto:
SERVICE_ACCOUNT=eventarc-gke-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
Dem Dienstkonto müssen die folgenden Rollen für Trigger mit GKE-Zielen zugewiesen werden:
roles/pubsub.subscriber
roles/monitoring.metricWriter
roles/eventarc.eventReceiver
(Nur für AuditLog-Trigger. Das wird in einem späteren Schritt hinzugefügt.)
So weisen Sie die Rollen zu:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/pubsub.subscriber gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/monitoring.metricWriter
Erstellen
Erstellen Sie einen Trigger, um Pub/Sub-Nachrichten an Ihren Dienst weiterzuleiten:
TRIGGER_NAME=trigger-pubsub-gke gcloud eventarc triggers create $TRIGGER_NAME \ --destination-gke-cluster=$CLUSTER_NAME \ --destination-gke-location=$REGION \ --destination-gke-namespace=default \ --destination-gke-service=$SERVICE_NAME \ --destination-gke-path=/ \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Test
Sie können prüfen, ob der Trigger erstellt wurde, indem Sie alle Trigger auflisten:
gcloud eventarc triggers list
Bei einem Pub/Sub-Trigger wird im Hintergrund ein Pub/Sub-Thema erstellt. Wir ermitteln sie und weisen sie 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"
Wenn Sie prüfen möchten, ob das Ereignis empfangen wurde, suchen Sie zuerst nach dem Namen des Pods:
kubectl get pods NAME READY STATUS hello-gke-df6469d4b-5vv22 1/1 Running
Speichern Sie sie in einer Variablen:
POD_NAME=hello-gke-df6469d4b-5vv22
Prüfen Sie anhand der Logs des Pods, ob das Ereignis empfangen wurde:
kubectl logs $POD_NAME { "severity": "INFO", "eventType": "google.cloud.pubsub.topic.v1.messagePublished", "message": "Received event of type google.cloud.pubsub.topic.v1.messagePublished. Event data: Hello World", "event": { "data": { "subscription": "projects/atamel-eventarc-gke/subscriptions/eventarc-us-central1-trigger-pubsub-gke-sub-270", "message": { "data": "SGVsbG8gV29ybGQ=", "messageId": "6031025573654834", "publishTime": "2022-10-19T14:13:07.990Z" } }, "datacontenttype": "application/json", "id": "6031025573654834", "source": "//pubsub.googleapis.com/projects/atamel-eventarc-gke/topics/eventarc-us-central1-trigger-pubsub-gke-729", "specversion": "1.0", "time": "2022-10-19T14:13:07.99Z", "type": "google.cloud.pubsub.topic.v1.messagePublished" } }
8. Cloud Storage-Trigger erstellen
Eine weitere Möglichkeit, Ereignisse zu empfangen, ist über Cloud Storage. Eine Anwendung kann beispielsweise eine Datei in einen Bucket hochladen und dieses Ereignis kann über Eventarc an Dienste gesendet werden.
Einrichtung
Bevor Sie einen Cloud Storage-Trigger erstellen, erstellen Sie einen Bucket, in dem Ereignisse empfangen werden:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gcloud storage buckets update gs://$BUCKET_NAME --location=$REGION
Außerdem müssen Sie dem Cloud Storage-Dienstkonto für Cloud Storage-Trigger die Rolle pubsub.publisher
hinzufügen:
SERVICE_ACCOUNT_STORAGE=$(gcloud storage service-agent --project=$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-gke gcloud eventarc triggers create $TRIGGER_NAME \ --destination-gke-cluster=$CLUSTER_NAME \ --destination-gke-location=$REGION \ --destination-gke-namespace=default \ --destination-gke-service=$SERVICE_NAME \ --destination-gke-path=/ \ --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
Sie können prüfen, ob der Trigger erstellt wurde, indem Sie alle Trigger auflisten:
gcloud eventarc triggers list
Erstellen Sie eine Datei und verwenden Sie gcloud storage
, um die Datei in den Bucket hochzuladen:
echo "Hello World" > random.txt gcloud storage cp random.txt gs://$BUCKET_NAME/random.txt
Prüfen Sie anhand der Logs des Pods, ob das Ereignis empfangen wurde:
kubectl logs $POD_NAME { "severity": "INFO", "eventType": "google.cloud.storage.object.v1.finalized", "message": "Received event of type google.cloud.storage.object.v1.finalized. Event data: {\n \"kind\": \"storage#object\",\n \"id\": \"eventarc-gcs-atamel-eventarc-gke/random.txt/1666190425669022\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt\",\n \"name\": \"random.txt\",\n \"bucket\": \"eventarc-gcs-atamel-eventarc-gke\",\n \"generation\": \"1666190425669022\",\n \"metageneration\": \"1\",\n \"contentType\": \"text/plain\",\n \"timeCreated\": \"2022-10-19T14:40:25.678Z\",\n \"updated\": \"2022-10-19T14:40:25.678Z\",\n \"storageClass\": \"STANDARD\",\n \"timeStorageClassUpdated\": \"2022-10-19T14:40:25.678Z\",\n \"size\": \"12\",\n \"md5Hash\": \"5Z/5eUEET4XfUpfhwwLSYA==\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt?generation=1666190425669022\u0026alt=media\",\n \"contentLanguage\": \"en\",\n \"crc32c\": \"R1jUOQ==\",\n \"etag\": \"CJ77zIPD7PoCEAE=\"\n}\n", "event": { "bucket": "eventarc-gcs-atamel-eventarc-gke", "data": { "kind": "storage#object", "id": "eventarc-gcs-atamel-eventarc-gke/random.txt/1666190425669022", "selfLink": "https://www.googleapis.com/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt", "name": "random.txt", "bucket": "eventarc-gcs-atamel-eventarc-gke", "generation": "1666190425669022", "metageneration": "1", "contentType": "text/plain", "timeCreated": "2022-10-19T14:40:25.678Z", "updated": "2022-10-19T14:40:25.678Z", "storageClass": "STANDARD", "timeStorageClassUpdated": "2022-10-19T14:40:25.678Z", "size": "12", "md5Hash": "5Z/5eUEET4XfUpfhwwLSYA==", "mediaLink": "https://storage.googleapis.com/download/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt?generation=1666190425669022\u0026alt=media", "contentLanguage": "en", "crc32c": "R1jUOQ==", "etag": "CJ77zIPD7PoCEAE=" }, "datacontenttype": "application/json", "id": "6031255652220627", "source": "//storage.googleapis.com/projects/_/buckets/eventarc-gcs-atamel-eventarc-gke", "specversion": "1.0", "subject": "objects/random.txt", "time": "2022-10-19T14:40:25.678152Z", "type": "google.cloud.storage.object.v1.finalized" } }
9. 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 Audit-Logs aktivieren. Wählen Sie in der Google 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
:
Außerdem müssen Sie dem Trigger-Dienstkonto für Cloud-Audit-Logs-Trigger die Rolle eventarc.eventReceiver
hinzufügen:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/eventarc.eventReceiver
Erstellen
Erstellen Sie einen Trigger, um Ereignisse zum Erstellen neuer Dateien aus dem Bucket an Ihren Dienst weiterzuleiten:
TRIGGER_NAME=trigger-auditlog-storage-gke gcloud eventarc triggers create $TRIGGER_NAME \ --destination-gke-cluster=$CLUSTER_NAME \ --destination-gke-location=$REGION \ --destination-gke-namespace=default \ --destination-gke-service=$SERVICE_NAME \ --destination-gke-path=/ \ --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-gke google.cloud.audit.log.v1.written GKE: hello-gke Yes
Erstellen Sie eine Datei und verwenden Sie gcloud storage
, um die Datei in den Bucket hochzuladen:
echo "Hello World" > random.txt gcloud storage cp random.txt gs://$BUCKET_NAME/random.txt
Prüfen Sie anhand der Logs des Pods, ob das Ereignis empfangen wurde:
kubectl logs $POD_NAME { "severity": "INFO", "eventType": "google.cloud.audit.log.v1.written", "message": "Received event of type google.cloud.audit.log.v1.written. Event data: {\"protoPayload\":{\"status\":{},\"authenticationInfo\":{\"principalEmail\":\"atameldev@gmail.com\"},\"requestMetadata\":{\"callerIp\":\"149.71.143.227\",\"callerSuppliedUserAgent\":\"apitools Python/3.10.4 gsutil/5.14 (darwin) analytics/disabled interactive/True command/cp google-cloud-sdk/405.0.1,gzip(gfe)\",\"requestAttributes\":{\"time\":\"2022-10-19T15:05:54.144615670Z\",\"auth\":{}},\"destinationAttributes\":{}},\"serviceName\":\"storage.googleapis.com\",\"methodName\":\"storage.objects.create\",\"authorizationInfo\":[{\"resource\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"permission\":\"storage.objects.delete\",\"granted\":true,\"resourceAttributes\":{}},{\"resource\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"permission\":\"storage.objects.create\",\"granted\":true,\"resourceAttributes\":{}}],\"resourceName\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"serviceData\":{\"@type\":\"type.googleapis.com/google.iam.v1.logging.AuditData\",\"policyDelta\":{\"bindingDeltas\":[{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"projectOwner:atamel-eventarc-gke\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"projectEditor:atamel-eventarc-gke\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"user:atameldev@gmail.com\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectReader\",\"member\":\"projectViewer:atamel-eventarc-gke\"}]}},\"resourceLocation\":{\"currentLocations\":[\"us-central1\"]}},\"insertId\":\"-8vmrbve7pol2\",\"resource\":{\"type\":\"gcs_bucket\",\"labels\":{\"project_id\":\"atamel-eventarc-gke\",\"bucket_name\":\"eventarc-gcs-atamel-eventarc-gke\",\"location\":\"us-central1\"}},\"timestamp\":\"2022-10-19T15:05:54.138732321Z\",\"severity\":\"INFO\",\"logName\":\"projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access\",\"receiveTimestamp\":\"2022-10-19T15:05:54.839604461Z\"}", "event": { "data": { "protoPayload": { "status": { }, "authenticationInfo": { "principalEmail": "atameldev@gmail.com" }, "requestMetadata": { "callerIp": "149.71.143.227", "callerSuppliedUserAgent": "apitools Python/3.10.4 gsutil/5.14 (darwin) analytics/disabled interactive/True command/cp google-cloud-sdk/405.0.1,gzip(gfe)", "requestAttributes": { "time": "2022-10-19T15:05:54.144615670Z", "auth": { } }, "destinationAttributes": { } }, "serviceName": "storage.googleapis.com", "methodName": "storage.objects.create", "authorizationInfo": [ { "resource": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "permission": "storage.objects.delete", "granted": true, "resourceAttributes": { } }, { "resource": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "permission": "storage.objects.create", "granted": true, "resourceAttributes": { } } ], "resourceName": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "serviceData": { "@type": "type.googleapis.com/google.iam.v1.logging.AuditData", "policyDelta": { "bindingDeltas": [ { "action": "ADD", "role": "roles/storage.legacyObjectOwner", "member": "projectOwner:atamel-eventarc-gke" }, { "action": "ADD", "role": "roles/storage.legacyObjectOwner", "member": "projectEditor:atamel-eventarc-gke" }, { "action": "ADD", "role": "roles/storage.legacyObjectOwner", "member": "user:atameldev@gmail.com" }, { "action": "ADD", "role": "roles/storage.legacyObjectReader", "member": "projectViewer:atamel-eventarc-gke" } ] } }, "resourceLocation": { "currentLocations": [ "us-central1" ] } }, "insertId": "-8vmrbve7pol2", "resource": { "type": "gcs_bucket", "labels": { "project_id": "atamel-eventarc-gke", "bucket_name": "eventarc-gcs-atamel-eventarc-gke", "location": "us-central1" } }, "timestamp": "2022-10-19T15:05:54.138732321Z", "severity": "INFO", "logName": "projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access", "receiveTimestamp": "2022-10-19T15:05:54.839604461Z" }, "datacontenttype": "application/json; charset=utf-8", "dataschema": "https://googleapis.github.io/google-cloudevents/jsonschema/google/events/cloud/audit/v1/LogEntryData.json", "id": "projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access-8vmrbve7pol21666191954138732", "methodname": "storage.objects.create", "recordedtime": "2022-10-19T15:05:54.138732321Z", "resourcename": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "servicename": "storage.googleapis.com", "source": "//cloudaudit.googleapis.com/projects/atamel-eventarc-gke/logs/data_access", "specversion": "1.0", "subject": "storage.googleapis.com/projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "time": "2022-10-19T15:05:54.839604461Z", "type": "google.cloud.audit.log.v1.written" } }
10. Glückwunsch!
Herzlichen Glückwunsch zum Abschluss des Codelabs.
Behandelte Themen
- GKE-Cluster erstellen
- GKE-Dienst als Ereignissenke erstellen
- Pub/Sub-Trigger erstellen
- Cloud Storage-Trigger erstellen
- Erstellen Sie einen Cloud-Audit-Log-Trigger.