1. مقدمة
تسهّل Eventarc ربط خدمات مختلفة (Cloud Run وKubernetes وWorkflows) بأحداث من مجموعة متنوعة من المصادر. يتيح لك ذلك إنشاء بنى مستندة إلى الأحداث تكون فيها الخدمات المصغّرة مرتبطة بشكل فضفاض ومتوزّعة. وتتولى هذه الخدمة أيضًا نقل الأحداث وتسليمها وتأمينها وتفويضها ومعالجة الأخطاء، ما يعزّز سرعة استجابة المطوّرين ومرونة التطبيقات. اطّلِع على بدء Cloud Run باستخدام أحداث من دورة تدريبية حول Eventarc للحصول على مقدمة عن Eventarc.
في هذا الدليل التعليمي حول الرموز البرمجية، ستستخدم Eventarc لقراءة الأحداث من Pub/Sub وCloud Storage وCloud Audit Logs ونقلها إلى خدمة Kubernetes التي تعمل على Google Kubernetes Engine (GKE).
المُعطيات
- أنشئ مجموعة GKE.
- أنشئ خدمة GKE كمصدر أحداث.
- أنشئ عبارة تشغيل Pub/Sub.
- إنشاء مشغِّل في Cloud Storage
- أنشئ مشغِّلًا لـ "سجلّات تدقيق Cloud".
2. الإعداد والمتطلبات
إعداد البيئة حسب السرعة التي تناسبك
- سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها واجهات برمجة تطبيقات Google. ويمكنك تعديله في أي وقت.
- يكون معرّف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد ضبطه). تُنشئ Cloud Console سلسلة فريدة تلقائيًا، ولا يهمّك عادةً معرفة محتواها. في معظم مختبرات رموز البرامج، ستحتاج إلى الإشارة إلى معرّف المشروع (يُعرَف عادةً باسم
PROJECT_ID
). إذا لم يعجبك المعرّف الذي تم إنشاؤه، يمكنك إنشاء معرّف آخر عشوائي. يمكنك بدلاً من ذلك تجربة عنوانك ومعرفة ما إذا كان متاحًا. ولا يمكن تغييره بعد هذه الخطوة وسيظلّ ساريًا طوال مدة المشروع. - يُرجى العِلم أنّ هناك قيمة ثالثة، وهي رقم المشروع الذي تستخدمه بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات عن كلّ من هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. من المفترض ألا تتطلّب المشاركة في هذا الدليل التعليمي البرمجي أي تكلفة، أو أن تكون التكلفة منخفضة جدًا. لإيقاف الموارد كي لا يتم تحصيل رسوم منك بعد انتهاء هذا الدليل التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع بأكمله. المستخدمون الجدد في Google Cloud مؤهّلون للاستفادة من برنامج الفترة التجريبية المجانية التي تبلغ قيمتها 300 دولار أمريكي.
بدء Cloud Shell
على الرغم من أنّه يمكن تشغيل Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الإصدار التجريبي من "مختبر رموز Google" Google Cloud Shell، وهي بيئة سطر أوامر تعمل في السحابة الإلكترونية.
من Google Cloud Console، انقر على رمز Cloud Shell في شريط الأدوات أعلى يسار الصفحة:
من المفترض ألا تستغرق عملية توفير البيئة والاتصال بها سوى بضع دقائق. عند الانتهاء، من المفترض أن يظهر لك ما يلي:
يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. ويقدّم هذا الدليل دليلاً منزليًا دائمًا بسعة 5 غيغابايت، ويتم تشغيله على 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 في 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>
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 مجموعة وحدات منفصلة لتوجيه الأحداث لكل عامل تشغيل يستهدف خدمة 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"
للتحقّق مما إذا تم استلام الحدث، ابحث أولاً عن اسم الحزمة:
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" } }
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
راجِع سجلات الحِزمة للتحقّق من الحدث المستلَم:
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 Console، اختَر IAM & Admin
وAudit Logs
من القائمة في أعلى يمين الصفحة. في قائمة الخدمات، ضَع علامة في المربّع Google Cloud Storage
:
على يسار الصفحة، تأكَّد من اختيار Admin
وRead
وWrite
وانقر على Save
:
عليك أيضًا إضافة دور eventarc.eventReceiver
إلى حساب الخدمة المشغِّل لعوامل تشغيل "سجلّات تدقيق السحابة الإلكترونية":
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
راجِع سجلات الحِزمة للتحقّق من الحدث المستلَم:
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".