۱. مقدمه

Eventarc اتصال سرویسهای مختلف (Cloud Run، Kubernetes، Workflows) را با رویدادهایی از منابع مختلف آسان میکند. این ابزار به شما امکان میدهد معماریهای رویدادمحور بسازید که در آنها میکروسرویسها به صورت آزادانه جفت و توزیع شدهاند. همچنین دریافت، تحویل، امنیت، مجوزدهی و مدیریت خطا را برای شما انجام میدهد که چابکی توسعهدهنده و انعطافپذیری برنامه را بهبود میبخشد. برای آشنایی با Eventarc ، Trigger Cloud Run with events از Eventarc codelab را بررسی کنید.
در این آزمایشگاه کد، شما از Eventarc برای خواندن رویدادها از Pub/Sub، Cloud Storage و Cloud Audit Logs و ارسال آنها به یک سرویس Kubernetes که روی Google Kubernetes Engine (GKE) اجرا میشود، استفاده خواهید کرد.
آنچه یاد خواهید گرفت
- یک کلاستر GKE ایجاد کنید.
- یک سرویس GKE به عنوان یک سینک رویداد ایجاد کنید.
- یک تریگر Pub/Sub ایجاد کنید.
- ایجاد یک تریگر ذخیرهسازی ابری
- یک تریگر برای گزارشهای حسابرسی ابری ایجاد کنید.
۲. تنظیمات و الزامات
تنظیم محیط خودتنظیم
- وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .



- نام پروژه ، نام نمایشی برای شرکتکنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمیشود. میتوانید آن را در هر زمانی بهروزرسانی کنید.
- شناسه پروژه در تمام پروژههای گوگل کلود منحصر به فرد است و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید میکند؛ معمولاً برای شما مهم نیست که چیست. در اکثر آزمایشگاههای کد، باید به شناسه پروژه ارجاع دهید (که معمولاً با عنوان
PROJECT_IDشناخته میشود). اگر شناسه تولید شده را دوست ندارید، میتوانید یک شناسه تصادفی دیگر ایجاد کنید. به عنوان یک جایگزین، میتوانید شناسه خودتان را امتحان کنید و ببینید که آیا در دسترس است یا خیر. پس از این مرحله قابل تغییر نیست و در طول پروژه باقی خواهد ماند. - برای اطلاع شما، یک مقدار سوم هم وجود دارد، شماره پروژه که برخی از APIها از آن استفاده میکنند. برای کسب اطلاعات بیشتر در مورد هر سه این مقادیر، به مستندات مراجعه کنید.
- در مرحله بعد، برای استفاده از منابع/API های ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد، اگر اصلاً هزینهای نداشته باشد، هزینه زیادی نخواهد داشت. برای خاموش کردن منابع به طوری که پس از این آموزش متحمل پرداخت صورتحساب نشوید، میتوانید منابعی را که ایجاد کردهاید یا کل پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.
شروع پوسته ابری
اگرچه میتوان از راه دور و از طریق لپتاپ، گوگل کلود را مدیریت کرد، اما در این آزمایشگاه کد، از گوگل کلود شل ، یک محیط خط فرمان که در فضای ابری اجرا میشود، استفاده خواهید کرد.
از کنسول گوگل کلود ، روی آیکون Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

آمادهسازی و اتصال به محیط فقط چند لحظه طول میکشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

این ماشین مجازی با تمام ابزارهای توسعهای که نیاز دارید، مجهز شده است. این ماشین مجازی یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه میدهد و روی فضای ابری گوگل اجرا میشود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود میبخشد. تمام کارهای شما در این آزمایشگاه کد را میتوان در یک مرورگر انجام داد. نیازی به نصب چیزی ندارید.
قبل از اینکه شروع کنی
در داخل Cloud Shell، مطمئن شوید که شناسه پروژه شما تنظیم شده است:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
۳. ایجاد یک خوشه GKE
ابتدا، سرویسهای مورد نیاز برای GKE را فعال کنید:
gcloud services enable container.googleapis.com
یک کلاستر Autopilot GKE ایجاد کنید:
CLUSTER_NAME=eventarc-cluster REGION=us-central1 gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
قبل از رفتن به مرحله بعدی، مطمئن شوید که ایجاد خوشه تکمیل شده است.
۴. یک سرویس GKE راهاندازی کنید
قبل از استقرار یک سرویس، اعتبارنامههای احراز هویت را برای تعامل با کلاستر با kubectl دریافت کنید:
gcloud container clusters get-credentials $CLUSTER_NAME \
--region $REGION
در مرحله بعد، کانتینر hello مربوط به 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
قبل از رفتن به مرحله بعدی، مطمئن شوید که پاد در حال اجرا است:
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>
۵. راهاندازی ایونتارک
در این مرحله، مراحلی را برای راهاندازی Eventarc و مقداردهی اولیه مقصدهای Eventarc GKE اجرا خواهید کرد.
ابتدا، سرویسهای مورد نیاز را برای مقاصد Eventarc و Eventarc GKE فعال کنید:
gcloud services enable eventarc.googleapis.com \ cloudresourcemanager.googleapis.com
سپس، Eventarc را برای مدیریت خوشههای GKE فعال کنید:
gcloud eventarc gke-destinations init
Eventarc برای هر trigger که یک سرویس GKE را هدف قرار میدهد، یک Event Forwarder Pod جداگانه ایجاد میکند و برای ایجاد تغییرات در کلاستر، مجوزهای صریحی را لازم دارد. این کار با اعطای مجوز به یک حساب کاربری سرویس ویژه برای مدیریت منابع در کلاستر انجام میشود. این کار باید یک بار در هر پروژه Google Cloud انجام شود.
۶. کشف رویداد
قبل از ایجاد تریگرها، میتوانید منابع رویداد، انواع رویدادهایی که میتوانند منتشر کنند و نحوه پیکربندی تریگرها برای مصرف آنها را کشف کنید.
میتوانید صفحه مستندات مربوط به رویدادهای پشتیبانیشده توسط 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
۷. یک تریگر 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(فقط برای triggerهای 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"
برای بررسی اینکه آیا رویداد دریافت شده است یا خیر، ابتدا نام پاد را پیدا کنید:
kubectl get pods NAME READY STATUS hello-gke-df6469d4b-5vv22 1/1 Running
و آن را در یک متغیر ذخیره کنید:
POD_NAME=hello-gke-df6469d4b-5vv22
برای تأیید رویداد دریافتی، گزارشهای پاد را بررسی کنید:
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"
}
}
۸. یک محرک ذخیرهسازی ابری ایجاد کنید
راه دیگر دریافت رویدادها از طریق فضای ذخیرهسازی ابری است. برای مثال، یک برنامه میتواند یک فایل را در یک سطل بارگذاری کند و آن رویداد میتواند از طریق Eventarc به سرویسها تحویل داده شود.
راهاندازی
قبل از ایجاد تریگر فضای ابری، یک باکت (bucket) برای دریافت رویدادها از موارد زیر ایجاد کنید:
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
برای تأیید رویداد دریافتی، گزارشهای پاد را بررسی کنید:
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"
}
}
۹. یک تریگر برای گزارشهای حسابرسی ابری ایجاد کنید
اگرچه تریگر Cloud Storage روش بهتری برای گوش دادن به رویدادهای Cloud Storage است، در این مرحله، شما یک تریگر Cloud Audit Log برای انجام همین کار ایجاد میکنید.
راهاندازی
برای دریافت رویدادها از یک سرویس، باید گزارشهای حسابرسی (Audit Logs) را فعال کنید. از کنسول ابری گوگل (Google Cloud Console)، گزینه IAM & Admin و سپس Audit Logs از منوی بالا سمت چپ انتخاب کنید. در لیست سرویسها، Google Cloud Storage ) را تیک بزنید:

در سمت راست، مطمئن شوید که Admin ، Read و Write انتخاب شدهاند و روی Save کلیک کنید:

همچنین باید نقش eventarc.eventReceiver را به حساب سرویس trigger برای triggerهای Cloud Audit Logs اضافه کنید:
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
تست
فعالسازی اولیهی تریگرهای Audit Logs کمی زمان میبرد. میتوانید با فهرست کردن تمام تریگرها، از ایجاد شدن تریگر مطمئن شوید:
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
برای تأیید رویداد دریافتی، گزارشهای پاد را بررسی کنید:
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"
}
}
۱۰. تبریک میگویم!
تبریک میگویم که آزمایشگاه کد را تمام کردی.
آنچه ما پوشش دادهایم
- یک کلاستر GKE ایجاد کنید.
- یک سرویس GKE به عنوان یک سینک رویداد ایجاد کنید.
- یک تریگر Pub/Sub ایجاد کنید.
- یک تریگر ذخیرهسازی ابری ایجاد کنید.
- یک تریگر برای گزارشهای حسابرسی ابری ایجاد کنید.