1. مقدمة
تسهِّل منصة Eventarc ربط الخدمات المتنوّعة (Cloud Run وKubernetes وWorkflows) بأحداث من مصادر مختلفة. ويسمح لك ذلك بإنشاء بُنى تستند إلى الأحداث، حيث يتم إقران الخدمات المصغَّرة وتوزيعها بشكل غير محكم. ويعتني أيضًا بنقل الأحداث وتسليمها والأمان والتفويض ومعالجة الأخطاء نيابةً عنك، ما يحسّن رشاقة المطوّرين ومرونة التطبيقات. يمكنك الاطّلاع على مقالة Trigger Cloud Run with الأحداث في الدرس التطبيقي حول ترميز Eventarc للاطّلاع على مقدّمة حول Eventarc.
في هذا الدرس التطبيقي حول الترميز، يمكنك استخدام Eventarc لقراءة الأحداث من سجلات Pub/Sub وCloud Storage وCloud التدقيق وتمريرها إلى خدمة Kubernetes التي تعمل على Google Kubernetes Engine (GKE).
ما ستتعرَّف عليه
- أنشئ مجموعة GKE.
- إنشاء خدمة GKE كوحدة للأحداث.
- أنشئ مشغِّل نشر/اشتراك.
- إنشاء مشغِّل في Cloud Storage
- إنشاء مشغِّل سجلات تدقيق السحابة الإلكترونية
2. الإعداد والمتطلبات
إعداد بيئة ذاتية
- سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديله في أي وقت.
- يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد تحديده). تنشئ Cloud Console سلسلة فريدة تلقائيًا. فعادةً لا تهتم بما هو. في معظم الدروس التطبيقية حول الترميز، يجب الإشارة إلى رقم تعريف المشروع (يتم تحديده عادةً على أنّه
PROJECT_ID
). وإذا لم يعجبك المعرّف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. ويمكنك بدلاً من ذلك تجربة طلبك الخاص ومعرفة ما إذا كان متوفّرًا. ولا يمكن تغييره بعد هذه الخطوة وسيبقى طوال مدة المشروع. - لمعلوماتك، هناك قيمة ثالثة، وهي رقم المشروع الذي تستخدمه بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام الموارد/واجهات برمجة التطبيقات في Cloud. إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. لإيقاف تشغيل الموارد حتى لا تتحمل الفوترة بعد هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع بالكامل. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.
بدء Cloud Shell
مع أنّه يمكن إدارة Google Cloud عن بُعد من الكمبيوتر المحمول، ستستخدم في هذا الدرس التطبيقي 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 GKE:
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 وCloudفعاليات:
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 ويمكن تسليم هذه الرسائل إلى الخدمات من خلال Eventarc.
الإعداد
قبل إنشاء أي مشغِّلات، يجب أن يكون لديك حساب خدمة لاستخدامه من خلال هذه المشغِّلات.
إنشاء حساب خدمة:
SERVICE_ACCOUNT=eventarc-gke-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
يجب منح حساب الخدمة الأدوار التالية للعوامل المشغِّلة مع وجهات GKE:
roles/pubsub.subscriber
roles/monitoring.metricWriter
roles/eventarc.eventReceiver
(لمشغّلات سجلّ التدقيق فقط. ستتم إضافة هذه المعلومات في خطوة لاحقة)
منح الأدوار:
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
إنشاء
إنشاء عامل تشغيل لتوجيه رسائل النشر/الاشتراك إلى الخدمة:
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
ينشئ مشغِّل النشر/الاشتراك موضوع نشر/اشتراك تحت الأغلفة. دعنا نكتشفه ونُعيّنه لمتغير:
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 gsutil mb -l $REGION gs://$BUCKET_NAME
عليك أيضًا إضافة الدور "pubsub.publisher
" إلى حساب خدمة Cloud Storage لعوامل التشغيل في Cloud Storage:
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
إنشاء
أنشِئ عامل تشغيل لتوجيه أحداث إنشاء الملفات الجديدة من الحزمة إلى خدمتك:
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
أنشِئ ملفًا واستخدِم gsutil
لتحميل الملف إلى الحزمة:
echo "Hello World" > random.txt gsutil 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 Storage هو الطريقة الأفضل للاستماع إلى أحداث Cloud Storage، يمكنك في هذه الخطوة إنشاء مشغِّل سجلّ تدقيق Cloud لتنفيذ الإجراء نفسه.
الإعداد
لتلقّي الأحداث من إحدى الخدمات، عليك تفعيل سجلّات التدقيق. من Google Cloud Console، اختَر 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
أنشِئ ملفًا واستخدِم gsutil
لتحميل الملف إلى الحزمة:
echo "Hello World" > random.txt gsutil 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. تهانينا!
تهانينا على إكمال الدرس التطبيقي حول الترميز.
المواضيع التي تناولناها
- أنشئ مجموعة GKE.
- إنشاء خدمة GKE كوحدة للأحداث.
- أنشئ مشغِّل نشر/اشتراك.
- أنشِئ مشغِّل Cloud Storage.
- إنشاء مشغِّل سجلات تدقيق السحابة الإلكترونية