1. مقدمة

تتيح لك خدمة Cloud Run تشغيل حاويات لا يتم تسجيل بياناتها في بيئة مُدارة بالكامل. وهي تستند إلى Knative المفتوحة المصدر، ما يتيح لك اختيار تشغيل الحاويات إما بشكل مُدار بالكامل باستخدام Cloud Run، أو في مجموعة Google Kubernetes Engine باستخدام Cloud Run for Anthos.

تسهّل خدمة Eventarc ربط خدمات مختلفة (مثل Cloud Run وCloud Functions وWorkflows) بالأحداث من مجموعة متنوعة من المصادر. تتيح لك إنشاء بنى مستندة إلى الأحداث تكون فيها الخدمات المصغّرة غير مرتبطة بشكل وثيق وموزّعة. تتولّى هذه الخدمة أيضًا عملية استيعاب الأحداث وتسليمها وتوفير الأمان والتفويض ومعالجة الأخطاء، ما يؤدي إلى تحسين سرعة استجابة المطوّرين ومرونة التطبيقات.
في هذا الدرس التطبيقي العملي، ستتعرّف على Eventarc. على وجه التحديد، ستستمع إلى الأحداث من Pub/Sub وCloud Storage وCloud Audit Logs باستخدام Eventarc، ثم ستمرّرها إلى إحدى خدمات Cloud Run.
أهداف الدورة التعليمية
- رؤية Eventarc
- اكتشاف الأحداث في Eventarc
- إنشاء مخزَن Cloud Run
- إنشاء مشغّل لخدمة Pub/Sub
- إنشاء مشغّل لخدمة Cloud Storage
- إنشاء مشغّل لخدمة Cloud Audit Logs
- استكشاف واجهة مستخدم Eventarc
2. رؤية Eventarc
تهدف خدمة Eventarc إلى تقديم الأحداث من مصادر أحداث مختلفة تابعة لجهات خارجية وGoogle وGoogle Cloud إلى وجهات أحداث Google Cloud.

مصادر Google Cloud | مصادر الأحداث التي هي منتجات تملكها Google Cloud |
مصادر Google | مصادر الأحداث التي هي منتجات تملكها Google، مثل Gmail وHangouts وAndroid Management وغيرها |
المصادر المخصّصة | مصادر الأحداث التي لا تملكها Google والتي ينشئها المستخدمون النهائيون بأنفسهم |
المصادر التابعة لجهات خارجية | مصادر الأحداث التي لا تملكها Google ولا ينتجها العملاء ويشمل ذلك مصادر الأحداث الشائعة، مثل Check Point CloudGuard وDatadog وForgeRock وLacework وما إلى ذلك، والتي يملكها ويديرها مقدّمو الخدمات والشركاء التابعون لجهات خارجية. |
يتم تعديل الأحداث لتتوافق مع تنسيق CloudEvents v1.0 من أجل إمكانية التشغيل التفاعلي بين الخدمات. CloudEvents هي مواصفات مفتوحة لا تعتمد على أي بائع وتصف بيانات الأحداث بتنسيقات شائعة، ما يتيح إمكانية التشغيل التفاعلي بين الخدمات والمنصات والأنظمة.
3- الإعداد والمتطلبات
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى 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 Platform، انقر على رمز Cloud Shell في شريط الأدوات العلوي الأيسر:

لن يستغرق توفير البيئة والاتصال بها سوى بضع لحظات. عند الانتهاء، من المفترض أن يظهر لك ما يلي:

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا ثابتًا بسعة 5 غيغابايت، وتعمل على Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يمكن إكمال جميع المهام في هذا التمرين المعملي باستخدام متصفّح فقط.
قبل البدء
داخل Cloud Shell، تأكَّد من إعداد رقم تعريف مشروعك:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. نشر خدمة Cloud Run
يمكنك نشر خدمة Cloud Run لتلقّي الأحداث. ستنفّذ حاوية Hello في Cloud Run التي تسجّل محتوى CloudEvents.
أولاً، فعِّل الخدمات المطلوبة لـ Cloud Run:
gcloud services enable run.googleapis.com
انشر حاوية hello على Cloud Run:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
عند النجاح، يعرض سطر الأوامر عنوان URL للخدمة. يمكنك فتح عنوان URL الخاص بالخدمة في أي نافذة متصفّح للتأكّد من أنّ الخدمة قد تم نشرها الآن.
5- اكتشاف الأحداث
قبل إنشاء مشغّلات في Eventarc، يمكنك التعرّف على مصادر الأحداث وأنواع الأحداث التي يمكن أن تصدرها وكيفية ضبط المشغّلات من أجل استخدامها.
للاطّلاع على قائمة بأنواع الأحداث المختلفة:
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
6. إنشاء مشغّل Pub/Sub
إحدى طرق تلقّي الأحداث هي من خلال Cloud Pub/Sub. يمكن لأي تطبيق نشر رسائل إلى Pub/Sub، ويمكن تسليم هذه الرسائل إلى Cloud Run من خلال Eventarc.
الإعداد
قبل إنشاء أي مشغّلات، فعِّل الخدمات المطلوبة لـ Eventarc:
gcloud services enable eventarc.googleapis.com
تحتاج أيضًا إلى حساب خدمة تستخدمه المشغّلات. أنشئ حساب خدمة:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
إنشاء
أنشئ مشغّلاً لفلترة الأحداث المنشورة في موضوع Pub/Sub إلى خدمة Cloud Run التي تم نشرها:
TRIGGER_NAME=trigger-pubsub gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
اختبار
ينشئ مشغّل 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"
تسجّل خدمة Cloud Run نص الرسالة الواردة. يمكنك الاطّلاع على ذلك في قسم "السجلّات" في مثيل Cloud Run:

إنشاء موضوع حالي على Pub/Sub
عند إنشاء مشغّل Pub/Sub، تنشئ خدمة Eventarc تلقائيًا موضوعًا في الخلفية لتستخدمه كموضوع نقل بين تطبيقك وخدمة Cloud Run. يفيد ذلك في إنشاء مشغّل يستند إلى Pub/Sub بسهولة وسرعة، ولكن قد تحتاج أحيانًا إلى استخدام موضوع حالي. تتيح لك خدمة Eventarc تحديد موضوع Pub/Sub حالي في المشروع نفسه باستخدام العلامة --transport-topic gcloud.
لمعرفة طريقة عمل ذلك، أنشئ موضوعًا على Pub/Sub لاستخدامه كموضوع نقل:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
إنشاء مشغّل:
TRIGGER_NAME=trigger-pubsub-existing gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
يمكنك اختبار المشغّل عن طريق إرسال رسالة إلى الموضوع:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. إنشاء مشغّل Cloud Storage
في هذه الخطوة، ستنشئ مشغِّلاً للاستماع إلى الأحداث من Cloud Storage.
الإعداد
أولاً، أنشِئ حزمة لتلقّي الأحداث منها:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
امنح دور eventarc.eventReceiver، حتى يمكن استخدام حساب الخدمة في مشغّل Cloud Storage:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
عليك أيضًا إضافة دور 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 gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --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
حمِّل ملفًا إلى حزمة Cloud Storage باتّباع الخطوات التالية:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
إذا تحقّقت من سجلّات خدمة Cloud Run في Cloud Console، من المفترض أن يظهر لك الحدث الذي تم تلقّيه:

8. إنشاء مشغّل Cloud Audit Logs
على الرغم من أنّ مشغّل Cloud Storage هو الطريقة الأفضل لتلقّي إشعارات بأحداث Cloud Storage، ستنشئ في هذه الخطوة مشغّل Cloud Audit Log لتنفيذ الإجراء نفسه.
الإعداد
لتلقّي الأحداث من إحدى الخدمات، عليك تفعيل "سجلات تدقيق السحابة الإلكترونية". من Cloud Console، انقر على IAM & Admin وAudit Logs من القائمة في أعلى يمين الصفحة. في قائمة الخدمات، ضَع علامة في المربّع Google Cloud Storage:

على يسار الصفحة، تأكَّد من اختيار Admin وRead وWrite، ثم انقر على Save:

إنشاء
أنشئ مشغّلاً لتوجيه أحداث إنشاء الملفات الجديدة من الحزمة إلى خدمتك:
TRIGGER_NAME=trigger-auditlog-storage gcloud eventarc triggers create $TRIGGER_NAME\ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --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 google.cloud.audit.log.v1.written Cloud Run service: hello Yes
حمِّل الملف نفسه إلى حزمة Cloud Storage كما فعلت سابقًا:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
إذا تحقّقت من سجلّات خدمة Cloud Run في Cloud Console، من المفترض أن يظهر لك الحدث الذي تم تلقّيه:

9- استكشاف واجهة مستخدم Eventarc
في هذه الخطوة، ستستكشف واجهة مستخدم Eventarc في Google Cloud Console. في واجهة مستخدم Eventarc، يمكنك الحصول على نظرة عامة على جميع المشغّلات وتعديلها وحذفها وإنشاء مشغّلات جديدة من Google Cloud Console.
انتقِل إلى قسم Eventarc في Google Cloud:

ستظهر لك قائمة بالمشغّلات التي أنشأتها سابقًا:

إذا نقرت على مشغّل، يمكنك الاطّلاع على تفاصيله أو تعديله أو حذفه:

يمكنك أيضًا إنشاء عامل مشغِّل جديد من خلال النقر على Create trigger وملء تفاصيل العامل المشغِّل:

10. تهانينا!
تهانينا على إكمال هذا الدرس العملي.
المواضيع التي تناولناها
- رؤية Eventarc
- اكتشاف الأحداث في Eventarc
- إنشاء مخزَن Cloud Run
- إنشاء مشغّل لخدمة Pub/Sub
- إنشاء مشغّل لخدمة Cloud Storage
- إنشاء مشغّل لخدمة Cloud Audit Logs
- استكشاف واجهة مستخدم Eventarc