1. מבוא
בעזרת Eventarc אפשר לחבר בקלות שירותים שונים (Cloud Run, Kubernetes, Workflows) לאירועים ממגוון מקורות. היא מאפשרת ליצור ארכיטקטורות מבוססות-אירועים שבהן מיקרו-שירותים (microservices) מקושרים באופן רופף ומופצים. בנוסף, השירות מטפל בהטמעת אירועים, בהעברה, באבטחה, בהרשאה ובטיפול בשגיאות, וכך משפר את הגמישות של המפתחים ואת עמידות האפליקציות. במאמר הפעלת Cloud Run באמצעות אירועים מ-Eventarc codelab מוסבר על Eventarc.
בסדנת הקוד הזו תלמדו איך להשתמש ב-Eventarc כדי לקרוא אירועים מ-Pub/Sub, מ-Cloud Storage ומיומני הביקורת של Cloud ולהעביר אותם לשירות Kubernetes שפועל ב-Google Kubernetes Engine (GKE).
מה תלמדו
- יוצרים אשכול GKE.
- יצירת שירות GKE כבור אירועים.
- יוצרים טריגר Pub/Sub.
- יצירת טריגר של Cloud Storage
- יוצרים טריגר של יומני ביקורת ב-Cloud.
2. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או משתמשים מחדש בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- שם הפרויקט הוא השם המוצג של המשתתפים בפרויקט. זוהי מחרוזת תווים שלא משמשת את Google APIs. אפשר לעדכן את המיקום הזה בכל שלב.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שמגדירים אותו. מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית. בדרך כלל לא משנה מה המחרוזת הזו. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט (בדרך כלל הוא מזוהה בתור
PROJECT_ID
). אם המזהה שנוצר לא מוצא חן בעיניכם, תוכלו ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות שם משלכם ולבדוק אם הוא זמין. לא ניתן לשנות את השם אחרי השלב הזה, והוא יישאר למשך כל תקופת הפרויקט. - לידיעתכם, יש ערך שלישי, מספר פרויקט, שמשתמשים בו בחלק מממשקי ה-API. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
- בשלב הבא, כדי להשתמש במשאבים או ב-API של Cloud, תצטרכו להפעיל את החיוב במסוף Cloud. השלמת הקודלאב הזה לא אמורה לעלות הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים אחרי סיום המדריך, אפשר למחוק את המשאבים שיצרתם או למחוק את הפרויקט כולו. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בסך 300$.
הפעלת Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל בסדנת הקוד הזו נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת ב-Cloud.
במסוף Google Cloud, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:
ההקצאה והחיבור לסביבת העבודה אמורים להימשך רק כמה רגעים. בסיום, אמור להופיע משהו כזה:
המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, משפרת מאוד את ביצועי הרשת ואת האימות. אתם יכולים לבצע את כל העבודה בקודלאב הזה בדפדפן. אין צורך להתקין שום דבר.
לפני שמתחילים
ב-Cloud Shell, מוודאים שמזהה הפרויקט מוגדר:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
3. יצירת אשכול GKE
קודם צריך להפעיל את השירותים הנדרשים ל-GKE:
gcloud services enable container.googleapis.com
יצירת אשכול GKE ב-Autopilot:
CLUSTER_NAME=eventarc-cluster REGION=us-central1 gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
מוודאים שתהליך יצירת האשכולות הושלם לפני שממשיכים לשלב הבא.
4. פריסת שירות ב-GKE
לפני פריסת שירות, צריך לקבל פרטי כניסה לאימות כדי לקיים אינטראקציה עם האשכולות באמצעות kubectl
:
gcloud container clusters get-credentials $CLUSTER_NAME \ --region $REGION
בשלב הבא, פורסים את hello container של Cloud Run כפריסה של Kubernetes ב-GKE. השירות הזה מתעד בקשות HTTP ו-CloudEvents שהתקבלו:
SERVICE_NAME=hello-gke kubectl create deployment $SERVICE_NAME \ --image=gcr.io/cloudrun/hello
חשיפת הפריסה כשירות פנימי ב-Kubernetes. כך נוצר שירות עם כתובת IP יציבה שניתן לגשת אליה בתוך האשכולות:
kubectl expose deployment $SERVICE_NAME \ --type ClusterIP --port 80 --target-port 8080
לפני שממשיכים לשלב הבא, מוודאים שה-pod פועל:
kubectl get pods NAME READY STATUS hello-gke-df6469d4b-5vv22 1/1 Running
אפשר גם לראות את השירות:
kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP hello-gke LoadBalancer 10.51.1.26 <none>
5. הגדרת Eventarc
בשלב הזה מריצים את השלבים להגדרת Eventarc ולאתחול יעדים של Eventarc ב-GKE.
קודם צריך להפעיל את השירותים הנדרשים ליעדים של Eventarc ו-Eventarc GKE:
gcloud services enable eventarc.googleapis.com \ cloudresourcemanager.googleapis.com
בשלב הבא מפעילים את Eventarc לניהול אשכולות GKE:
gcloud eventarc gke-destinations init
Eventarc יוצר אשכול נפרד של Event Forwarder לכל טריגר שמטרגט שירות GKE, ונדרש הרשאה מפורשת כדי לבצע שינויים באשכול. כדי לעשות זאת, מעניקים הרשאות לחשבון שירות מיוחד לניהול המשאבים באשכול. צריך לעשות זאת פעם אחת לכל פרויקט ב-Google Cloud.
6. גילוי אירועים
לפני שיוצרים טריגרים, כדאי לבדוק מהם מקורות האירועים, אילו סוגי אירועים הם יכולים לשלוח ואיך מגדירים טריגרים כדי לצרוך אותם.
אפשר לעיין בדף המסמכים כדי לקבל מידע על האירועים שנתמכים על ידי Eventarc.אפשר גם לבדוק את האירועים באמצעות gcloud
.
כדי לראות את רשימת הסוגים השונים של האירועים:
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.
מידע נוסף על כל סוג של אירוע זמין במאמרים הבאים:
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
כדי לראות את רשימת השירותים שמפיצים סוג אירוע מסוים:
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
כדי לראות את רשימת שמות השיטות (אירועי המשנה) שכל שירות יכול להפיק:
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
אחת מהדרכים לקבל אירועים היא דרך Pub/Sub. כל אפליקציה יכולה לפרסם הודעות ב-Pub/Sub, והודעות כאלה יכולות להימסר לשירותים דרך Eventarc.
הגדרה
לפני שיוצרים טריגרים, צריך חשבון שירות שטריגרים ישתמשו בו.
יוצרים חשבון שירות:
SERVICE_ACCOUNT=eventarc-gke-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
צריך להקצות לחשבון השירות את התפקידים הבאים לטריגרים עם יעדים ב-GKE:
roles/pubsub.subscriber
roles/monitoring.metricWriter
roles/eventarc.eventReceiver
(רק לטריגרים של AuditLog. האפשרות הזו תתווסף בשלב מאוחר יותר)
מקצים את התפקידים:
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
יצירה
יוצרים טריגר כדי לנתב הודעות Pub/Sub לשירות:
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
בדיקה
כדי לבדוק שהטריגר נוצר, אפשר להציג את כל הטריגרים:
gcloud eventarc triggers list
הטריגר של Pub/Sub יוצר נושא Pub/Sub ברקע. נבדוק את זה ונקצה למשתנה:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
משתמשים ב-gcloud
כדי לפרסם הודעה בנושא:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
כדי לבדוק אם האירוע התקבל, קודם צריך למצוא את שם ה-pod:
kubectl get pods NAME READY STATUS hello-gke-df6469d4b-5vv22 1/1 Running
ושומרים אותו במשתנה:
POD_NAME=hello-gke-df6469d4b-5vv22
בודקים את היומנים של ה-pod כדי לוודא שהאירוע התקבל:
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
דרך נוספת לקבל אירועים היא דרך Cloud Storage. לדוגמה, אפליקציה יכולה להעלות קובץ לקטגוריה, והאירוע הזה יכול להישלח לשירותים דרך Eventarc.
הגדרה
לפני שיוצרים טריגר של Cloud Storage, צריך ליצור קטגוריה לקבלת אירועים מהמקורות הבאים:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gcloud storage buckets update gs://$BUCKET_NAME --location=$REGION
צריך גם להוסיף את התפקיד pubsub.publisher
לחשבון השירות של Cloud Storage לטריגרים של Cloud Storage:
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
יצירה
יוצרים טריגר כדי לנתב אירועים חדשים של יצירת קבצים מהקטגוריה לשירות:
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
בדיקה
כדי לבדוק שהטריגר נוצר, אפשר להציג את כל הטריגרים:
gcloud eventarc triggers list
יוצרים קובץ ומשתמשים בפקודה gcloud storage
כדי להעלות את הקובץ לקטגוריה:
echo "Hello World" > random.txt gcloud storage cp random.txt gs://$BUCKET_NAME/random.txt
בודקים את היומנים של ה-pod כדי לוודא שהאירוע התקבל:
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
טריגר של Cloud Storage הוא הדרך הטובה ביותר להאזין לאירועים ב-Cloud Storage, אבל בשלב הזה תיצורו טריגר של יומני הביקורת של Cloud כדי לעשות את אותו הדבר.
הגדרה
כדי לקבל אירועים משירות, צריך להפעיל את יומני הביקורת. במסוף Google Cloud, בוחרים באפשרויות IAM & Admin
ו-Audit Logs
בתפריט הימני העליון. ברשימת השירותים, מסמנים את Google Cloud Storage
:
בצד שמאל, מוודאים שהאפשרויות Admin
, Read
ו-Write
מסומנות ולוחצים על Save
:
צריך גם להוסיף את התפקיד eventarc.eventReceiver
לחשבון השירות של הטריגר לטריגרים של יומני הביקורת ב-Cloud:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/eventarc.eventReceiver
יצירה
יוצרים טריגר כדי לנתב אירועים חדשים של יצירת קבצים מהקטגוריה לשירות:
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
בדיקה
תהליך האתחול של טריגרים של יומני ביקורת נמשך קצת זמן. כדי לבדוק שהטריגר נוצר, אפשר להציג את כל הטריגרים:
gcloud eventarc triggers list
השדה Active
אמור להיות Yes
:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage-gke google.cloud.audit.log.v1.written GKE: hello-gke Yes
יוצרים קובץ ומשתמשים בפקודה gcloud storage
כדי להעלות את הקובץ לקטגוריה:
echo "Hello World" > random.txt gcloud storage cp random.txt gs://$BUCKET_NAME/random.txt
בודקים את היומנים של ה-pod כדי לוודא שהאירוע התקבל:
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. מעולה!
כל הכבוד על השלמת ה-Codelab.
מה עסקנו בו
- יוצרים אשכול GKE.
- יצירת שירות GKE כבור אירועים.
- יוצרים טריגר Pub/Sub.
- יוצרים טריגר של Cloud Storage.
- יוצרים טריגר של יומני ביקורת ב-Cloud.