تشغيل سير العمل باستخدام Eventarc

1. نظرة عامة

ستنشئ في هذا التمرين المعملي مشغل Eventarc الذي يربط موضوع Pub/Sub بخدمة سير العمل. تتيح لك شركة Eventarc فصل الخدمة عن خدمة الاتصال، ما يجعل الحل الخاص بك أكثر اتساعًا ويستند إلى الأحداث. ستقوم بإنشاء سير عمل يتضمن خطوات متعددة لتنفيذ عملية عمل لحساب نقاط مكافأة العملاء للطلب في Cymbal Eats. ستستدعي سير العمل واجهة برمجة تطبيقات خاصة لخدمة Cloud Run API لتنفيذ منطق الأعمال. تم ضبط خدمة تشغيل السحابة الإلكترونية للسماح بالزيارات الداخلية فقط وتتطلّب مصادقة. ستنشر Workflow رسالة إلى موضوع النشر/الاشتراك لإبلاغ خدمة الطلب بنقاط المكافآت المحسوبة.

c6d4337a47b55333.png

ما هي Eventarc؟

تتيح لك منصة Eventarc إنشاء بُنى تستند إلى الأحداث بدون الحاجة إلى تنفيذ البنية الأساسية الأساسية أو تخصيصها أو صيانتها. توفّر منصة Eventarc حلاً موحّدًا لإدارة تدفق تغييرات الحالة، والذي يُطلق عليه اسم الأحداث، بين الخدمات المصغّرة المنفصلة. عند تفعيل منصة Eventarc، توجّه هذه الأحداث من خلال اشتراكات النشر/الاشتراك إلى وجهات مختلفة (على سبيل المثال، Workflows أو Cloud Run) أثناء إدارة التسليم والأمان والتفويض وإمكانية الملاحظة ومعالجة الأخطاء نيابةً عنك.

موفّرو فعاليات Google

  • أكثر من 90 مقدّم خدمة Google Cloud ويُرسل موفّرو الخدمات هؤلاء الأحداث إما مباشرةً من المصدر (على سبيل المثال، Cloud Storage) أو من خلال إدخالات سجلّات التدقيق في Cloud.
  • مقدّمو خدمة النشر/الاشتراك يرسل موفّرو الخدمات هؤلاء الأحداث إلى Eventarc باستخدام رسائل Pub/Sub.

مقدّمو الخدمات التابعون لجهات خارجية

مقدّمو الخدمات التابعون لجهات خارجية هم كيانات غير تابعة لشركة Google توفّر مصدر Eventarc.

مشغِّلات Eventarc

  • أحداث Cloud Pub/Sub: يمكن تشغيل Eventarc من خلال الرسائل المنشورة في مواضيع Pub/Sub.
  • أحداث سجلات تدقيق Cloud (CAL) توفّر سجلّات التدقيق في السحابة الإلكترونية سجلّات تدقيق "نشاط المشرف" و"الوصول إلى البيانات" لكل مشروع ومجلد ومؤسسة على السحابة الإلكترونية.
  • الأحداث المباشرة: يمكن تشغيل Eventarc بواسطة أحداث مباشرة متنوعة مثل تعديل حزمة Cloud Storage أو تعديل نموذج "الإعداد عن بُعد في Firebase".

وجهات الأحداث

c7ca054200edf1b3.png

ما هي سير العمل؟

Workflows هي خدمة مُدارة بالكامل تتيح لك دمج الخدمات المصغّرة والمهام وواجهات برمجة التطبيقات. سير العمل هو خدمة بدون خادم وسيتم توسيع نطاقه لتلبية طلبك.

حالات استخدام سير العمل:

  • يتم تنفيذ عمليات سير العمل المستندة إلى حدث على عوامل تشغيل محدّدة. على سبيل المثال، عندما يتم إرسال طلب جديد وتريد احتساب نقاط ولاء العملاء. أو عند إلغاء طلب، يمكن نشر الحدث وستعالج كل الخدمات المهتمة الحدث.
  • يتم تنفيذ مهام سير العمل المجمّعة للمهام بشكلٍ منتظم باستخدام Cloud Scheduler. على سبيل المثال، وظيفة ليلية للبحث عن عناصر القائمة في حالة "فشل" وحذفها.

تُعد سير العمل مثالية لمهام سير العمل التي تنظم الخدمات. يمكنك برمجة العمليات التي تشمل الانتظار وإعادة المحاولة لمدة تصل إلى عام.

مزايا سير العمل:

  • الضبط على الترميز: يمكنك تقليل الديون التقنية عن طريق نقل المنطق إلى عملية الإعداد بدلاً من كتابة الرمز.
  • تبسيط البنية الأساسية: تتيح لك إجراءات سير العمل ذات الحالة الحالة عرض عمليات دمج الخدمات المعقدة ومراقبتها بدون اعتماديات إضافية.
  • يتضمن الموثوقية وتقبُّل الأخطاء. يمكنك التحكّم في الأعطال من خلال منطق إعادة المحاولة التلقائي أو المخصّص ومعالجة الأخطاء حتى في حال تعذُّر الأنظمة الأخرى، وذلك من خلال الإشارة في كل خطوة إلى Cloud Spanner لمساعدتك في تتبُّع مستوى التقدّم.
  • بدون أي صيانة: تعديل الحجم حسب الحاجة: لا يوجد شيء لتصحيحه أو صيانته. لا يتم تحصيل رسوم منك إلا عند تنفيذ مهام سير العمل، وبدون أي تكلفة أثناء الانتظار أو عدم النشاط.

في هذا التمرين المعملي، ستهيئ سير عمل يستند إلى الحدث.

ما سوف تتعلمه

ستتعلم في هذا التمرين المعملي كيفية القيام بما يلي:

  • ضبط موضوع Pub/Sub وEventarc لتشغيل سير العمل
  • إعداد Workflow لطلب خدمة Cloud Run ونشر الرسائل في Pub/Sub
  • كيفية طلب البحث عن سجلّات Workflows المنظَّمة في Cloud Logging واستخدام gcloud CLI

المتطلبات الأساسية

  • يفترض هذا التمرين المعملي الإلمام ببيئة Cloud Console وCloud Shell.
  • وتُعدّ تجربة استخدام Cloud Run وCloud Pub/Sub السابقة مفيدة ولكنّها ليست مطلوبة.

2. الإعداد والمتطلبات

إعداد مشروع Cloud

  1. سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديله في أي وقت.
  • يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد تحديده). تنشئ Cloud Console سلسلة فريدة تلقائيًا. فعادةً لا تهتم بما هو. في معظم الدروس التطبيقية حول الترميز، يجب الإشارة إلى رقم تعريف المشروع (يتم تحديده عادةً على أنّه PROJECT_ID). وإذا لم يعجبك المعرّف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. ويمكنك بدلاً من ذلك تجربة طلبك الخاص ومعرفة ما إذا كان متوفّرًا. ولا يمكن تغييره بعد هذه الخطوة وسيبقى طوال مدة المشروع.
  • لمعلوماتك، هناك قيمة ثالثة، وهي رقم المشروع الذي تستخدمه بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام الموارد/واجهات برمجة التطبيقات في Cloud. إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. لإيقاف تشغيل الموارد حتى لا تتحمل الفوترة بعد هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع بالكامل. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.

إعداد البيئة

يمكنك تفعيل Cloud Shell من خلال النقر على الرمز على يسار شريط البحث.

eb0157a992f16fa3.png

استنسِخ المستودع وانتقِل إلى الدليل، وانسخ الأمر أدناه والصقه في الوحدة الطرفية وانقر على Enter:

git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service

نشر الموارد التابعة المطلوبة من خلال تنفيذ lab-setup.sh

سيتم إنشاء المراجع التالية:

  • المجموعة والمثيل في AlloyDB
  • Artifact Registry لتخزين صور الحاويات من أجل Cloud Run Job وخدمة العملاء
  • موصِّل الوصول إلى VPC لخدمة Cloud Run وJob للاتصال بقاعدة بيانات AlloyDB
  • مهمة تشغيل السحابة الإلكترونية لإنشاء قاعدة بيانات AlloyDB
  • خدمة عملاء Cloud Run - خدمة مصغّرة مستندة إلى جافا وتستخدم إطار عمل Quarkus.
./lab-setup.sh

إذا طُلب منك التفويض، انقر على "تفويض". للمتابعة.

6356559df3eccdda.png

سيستغرق الإعداد حوالى 10 دقائق.

انتظِر إلى أن ينتهي النص البرمجي وتظهر لك النتيجة أدناه قبل تنفيذ الخطوات الأخرى.

Deploying container to Cloud Run service [customer-service] in project [cymbal-eats-19227-5681] region [us-east1]
OK Deploying new service... Done.                                                   
  OK Creating Revision...
  OK Routing traffic...
Done.
Service [customer-service] revision [customer-service-00001-mid] has been deployed and is serving 100 percent of traffic.
Service URL: https://customer-service-e4p5zon5rq-ue.a.run.app

يمكنك استكشاف القسم التالي ثم العودة للاستئناف من الخطوة التالية.

3- مراجعة سير العمل

المفاهيم الأساسية لسير العمل

يتكوّن سير العمل من سلسلة من الخطوات الموضَّحة باستخدام بنية Workflows( YAML أو JSON).

بعد إنشاء سير عمل، يتم نشره، ما يجعله جاهزًا للتنفيذ.

التنفيذ هو عملية تشغيل واحدة للمنطق المضمّن في تعريف سير العمل. لا يؤدي سير العمل الذي لم يتم تنفيذه إلى تحصيل أي رسوم. تُعدّ جميع عمليات تنفيذ سير العمل مستقلة، ويتيح التوسّع السريع للمنتج عددًا كبيرًا من عمليات التنفيذ المتزامنة.

عناصر التحكّم في التنفيذ

  • الخطوات: لإنشاء سير عمل، يمكنك تحديد steps المطلوب وترتيب التنفيذ باستخدام بنية Workflows. يجب أن يتضمن كل سير عمل خطوة واحدة على الأقل.
  • الشروط - يمكنك استخدام مجموعة switch كآلية اختيار تسمح لقيمة التعبير بالتحكّم في مسار تنفيذ سير العمل.
  • التكرارات - يمكنك استخدام التكرار الحلقي for لتكرار تسلسل أرقام أو خلال مجموعة من البيانات، مثل قائمة أو خريطة.
  • سير العمل الفرعي: يعمل سير العمل الفرعي بشكل مشابه للروتين اليومي أو الوظيفة في لغة برمجة، ما يسمح لك بتغليف خطوة أو مجموعة خطوات سيتكررها سير العمل عدة مرات.

شغِّل عمليات التنفيذ

  • يدوي: يمكنك إدارة مهام سير العمل من وحدة تحكُّم Google Cloud أو من سطر الأوامر باستخدام واجهة سطر الأوامر في Google Cloud.
  • برمجة: يمكن استخدام Cloud Client Libraries لواجهة برمجة تطبيقات Workflows أو REST API لإدارة مهام سير العمل.
  • مجدوَل - يمكنك استخدام "أداة جدولة المهام في السحابة الإلكترونية" لتنفيذ سير عمل وفقًا لجدول زمني معيَّن.

وسيطات وقت التشغيل

يمكن الوصول إلى البيانات التي تم تمريرها في وقت التشغيل من خلال إضافة حقل "params" إلى سير العمل الرئيسي (الموضوع في مجموعة رئيسية). تقبل المجموعة الرئيسية وسيطة واحدة تمثّل أي نوع صالح من بيانات JSON. يسمي حقل المَعلمات المتغيّر الذي يستخدمه سير العمل لتخزين البيانات التي تمرِّرها.

مصادقة خدمة سير العمل إلى السحابة الإلكترونية

خدمة العملاء هي نموذج تطبيق مضمّن في هذا المستودع الذي يتم تشغيله على Cloud Run ويتم إعداده للسماح بالطلبات التي تمت مصادقتها والواردة من الشبكات الداخلية فقط. سيكون عليك ضبط Workflows لإضافة رمز OpenID Connect(OIDC) المميز المُوقَّع من Google إلى طلب المصادقة مع خدمة Cloud Run.

راجِع الوثائق لمزيد من المعلومات حول المصادقة من خدمة إلى خدمة.

يتم ضبط مصادقة سير العمل ضمن مجموعة "args" باستخدام القسم "auth".

rewardsWorkflow.yaml.tmpl

   - create_customer:
        call: http.post
        args:
          url: CUSTOMER_SERVICE_URL/customer
          auth:
            type: OIDC

منطق سير العمل

إذا لم يكن هناك عميل، سيُجري سير العمل هذا طلب بيانات من واجهة برمجة التطبيقات لإنشاء عميل أولاً، ثم تعديل نقاط المكافآت. استنادًا إلى إجمالي مبلغ الطلب، سيختار سير العمل مضاعِفًا لحساب نقاط المكافآت للعميل. راجِع النموذج أدناه للحصول على التفاصيل.

  - calculate_multiplier:
        switch:
          - condition: ${totalAmount < 10}
            steps:
              - set_multiplier1:
                  assign:
                    - multiplier: 2
          - condition: ${totalAmount >= 10 and totalAmount < 25}
            steps:
              - set_multiplier2:
                  assign:
                    - multiplier: 3
          - condition: ${totalAmount >= 25}
            steps:
              - set_multiplier3:
                  assign:
                    - multiplier: 5
    - calculate_rewards:
        assign:
            - rewardPoints: ${customerRecord.rewardPoints * multiplier}

fcd91b2bc5d60347.png

4. إعداد Workflow ونشره

متغيرات بيئة الإعداد:

export REGION=us-east1

export CUSTOMER_SERVICE_URL=$(gcloud run services describe customer-service \
  --platform managed \
  --region $REGION \
  --format=json | jq \
  --raw-output ".status.url")

echo $CUSTOMER_SERVICE_URL

استبدِل عنوان URL للخدمة في نموذج سير العمل:

sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" rewardsWorkflow.yaml.tmpl > rewardsWorkflow.yaml

ضبط الموقع لمتغيّرات خدمة سير العمل وبيئة المشروع:

gcloud config set workflows/location ${REGION}

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')

أنشئ حساب خدمة مخصّصًا لسير العمل باستخدام الأذونات التالية:

  • استدعاء خدمة تشغيل السحابة الإلكترونية
  • واجهات برمجة تطبيقات تسجيل المكالمات
  • نشر الرسائل في موضوع PubSub
export WORKFLOW_SERVICE_ACCOUNT=workflows-cloudrun-sa

gcloud iam service-accounts create ${WORKFLOW_SERVICE_ACCOUNT}

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
  --role "roles/run.invoker"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
  --role "roles/logging.logWriter"

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
  --role "roles/pubsub.publisher"

نشر سير العمل تم ضبط سير العمل لاستخدام حساب الخدمة الذي تم إنشاؤه في الخطوة السابقة:

export WORKFLOW_NAME=rewardsWorkflow

gcloud workflows deploy ${WORKFLOW_NAME} \
  --source=rewardsWorkflow.yaml \
  --service-account=${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com

راجِع مصدر سير العمل والتفاصيل الأخرى(علامة التبويب "العوامل المُشغِّلة"). في الوقت الحالي، لم يتم ضبط أي مشغِّلات لتنفيذ سير العمل هذا. ستقوم بإعداد هذه الميزة في الخطوة التالية.

d3527393fb07a9b3.png

5- ضبط مواضيع النشر/الاشتراك ومشغّل Eventarc

بعد ذلك، ستقوم بإنشاء موضوعين للنشر/الاشتراك وإعداد مشغل Eventarc واحد.

ستنشر خدمة الطلب رسائل إلى order-topic تحتوي على معلومات عن الطلبات الجديدة.

سينشر سير العمل رسائل إلى "order-points-topic" تتضمّن معلومات حول نقاط مكافأة الطلب والمبلغ الإجمالي. تعرض خدمة Order Service(notالميزات الخاصة بالميزة الاختبارية) نقطة نهاية يستخدمها اشتراك Push في order-points-topic, لتعديل نقاط المكافآت وإجمالي المبلغ لكل طلب.

إنشاء مواضيع جديدة للنشر/الاشتراك:

export TOPIC_ID=order-topic
export ORDER_POINTS_TOPIC_ID=order-points-topic
gcloud pubsub topics create $TOPIC_ID --project=$PROJECT_ID
gcloud pubsub topics create $ORDER_POINTS_TOPIC_ID --project=$PROJECT_ID

تحديد الموقع الجغرافي لخدمة Eventarc:

gcloud config set eventarc/location ${REGION}

أنشِئ حساب خدمة مخصّصًا ليتم استخدامه من خلال مشغّل Eventarc لتنفيذ مهام سير العمل.

export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa

gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}

عليك منح إذن الوصول إلى حساب الخدمة لتنفيذ مهام سير العمل.

gcloud projects add-iam-policy-binding ${PROJECT_ID} \
  --member="serviceAccount:${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --role="roles/workflows.invoker"

يمكنك إنشاء مشغِّل Eventarc للاستماع إلى رسائل Pub/Sub وتسليمها إلى Workflows.

gcloud eventarc triggers create new-orders-trigger \
  --destination-workflow=${WORKFLOW_NAME} \
  --destination-workflow-location=${REGION} \
  --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
  --service-account="${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
  --transport-topic=$TOPIC_ID

مثال على الإخراج:

Creating trigger [new-orders-trigger] in project [qwiklabs-gcp-01-1a990bfcadb3], location [us-east1]...done.     
Publish to Pub/Sub topic [projects/qwiklabs-gcp-01-1a990bfcadb3/topics/order-topic] to receive events in Workflow [rewardsWorkflow].
WARNING: It may take up to 2 minutes for the new trigger to become active.

راجِع نوع Eventarctrigger الذي تم إنشاؤه.

bda445561ad5f4.png

مراجعة الاشتراك الذي تم إنشاؤه لمعرفة عامل التفعيل

3fccdda7d5526597.png

مراجعة التغييرات من جانب سير العمل تمت إضافة عامل تفعيل جديد.

23d338abc16eaac8.png

6- اختبار سير العمل

c6d4337a47b55333.png

لمحاكاة خدمة الطلب، عليك إرسال رسائل إلى موضوع النشر/الاشتراك من Cloud Shell والتحقق من سجلات خدمة عملاء Cloud Run في Cloud Console.

export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'

مثال على الإخراج:

messageIds:
- '5063709859203105'

مراجعة تفاصيل تنفيذ سير العمل والسجلات.

1e802826c700cc3e.png

aad0eae7a970316.png

7. التسجيل المنظَّم في سير العمل

تم ضبط سير العمل لكتابة السجلّات المنظَّمة بتنسيق JSON. تتم كتابة السجلات باستخدام Cloud Logging API، ومورد workflows.googleapis.com/Workflow، وضمن اسم السجلّ projects/${PROJECT_ID}/logs/Workflows.

راجِع إعدادات التسجيل أدناه.

    - log_totalAmount:
        call: sys.log
        args:
            json:
              orderNumber: ${order.orderNumber}
              totalAmount: ${totalAmount}
              multiplier: ${multiplier}
              totalRewardPoints: ${rewardPoints}
              orderRewardPoints: ${orderRewardPoints}
            severity: INFO

افتح Logs Explorer (مستكشف السجلات) في Console ونفِّذ طلب بحث عن الطلبات التي تمت معالجتها بمبلغ إجمالي يزيد عن دولارين أمريكيين.

استخدِم طلب البحث أدناه، واستبدِل رقم تعريف المشروع(qwiklabs-gcp-01-1a990bfcadb3) برقم تعريف مشروعك الحالي:

resource.type="workflows.googleapis.com/Workflow" AND 
logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND 
jsonPayload.totalAmount > 2 AND 
timestamp >= "2022-11-01T23:59:59Z" AND 
timestamp <= "2023-11-05T00:00:00Z"

مثال على الإخراج:

22d2f4686c58724d.png

افتح Cloud Shell واستخدِم gcloud CLI لقراءة السجلات باستخدام الأوامر أدناه.

استبدِل رقم تعريف المشروع(qwiklabs-gcp-01-1a990bfcadb3) برقم تعريف مشروعك الحالي.

gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND jsonPayload.totalAmount > 2 AND timestamp >= "2022-11-01T23:59:59Z" AND timestamp <= "2023-11-05T00:00:00Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"

نموذج الناتج باستخدام التنسيق table:

35d5fd851ecde60.png

استبدِل رقم تعريف المشروع(qwiklabs-gcp-01-1a990bfcadb3) برقم تعريف مشروعك الحالي.

gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND jsonPayload.totalAmount > 2 AND timestamp >= "2022-11-01T23:59:59Z" AND timestamp <= "2023-11-05T00:00:00Z"' --limit 10 --format=json | jq

نموذج الناتج باستخدام التنسيق json:

ac7421548ea9a9f2.png

8. مراجعة سجلات العملاء

(خطوات اختيارية) تم ضبط الإعداد customer-service في الوقت الحالي لقبول الزيارات من الشبكات الداخلية فقط.

شغِّل الأوامر أدناه لحفظ عنوان URL للخدمة والاتصال بخدمة العملاء.

export REGION=us-east1
CUSTOMER_SERVICE_URL=$(gcloud run services describe customer-service \
    --region=$REGION \
    --format=json | jq \
    --raw-output ".status.url")

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $CUSTOMER_SERVICE_URL/customer

ستظهر لك رسالة خطأ تفيد بأنّ الوصول محظور.

<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>403 Forbidden</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Forbidden</h1>
<h2>Access is forbidden.</h2>
<h2></h2>
</body></html>

لعرض سجلات العملاء الحاليين، غيِّر إعدادات Cloud Run customer-service ingress إلى "Allow all traffic" وانقر على "حفظ".

سيؤدي ذلك إلى إظهار نقطة النهاية للجميع ويمكنك طلب واجهة برمجة تطبيقات خدمة العملاء من Cloud Shell باستخدام curl.

9156e0eb0a19bc68.png

شغِّل الأوامر أدناه لحفظ عنوان URL للخدمة وإدراج العملاء الحاليين.

CUSTOMER_SERVICE_URL=$(gcloud run services describe customer-service \
    --region=$REGION \
    --format=json | jq \
    --raw-output ".status.url")

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $CUSTOMER_SERVICE_URL/customer | jq

مثال على الإخراج:

[
  {
    "id": "id1",
    "rewardPoints": 3,
    "address": "1845 Denise St",
    "city": "Mountain View",
    "createDateTime": "2022-11-11T15:56:45.487566",
    "email": "ajensen9090+eats@gmail.com",
    "name": "Angela Jensen",
    "state": "CA",
    "updateDateTime": "2022-11-11T15:56:45.866125",
    "zip": "94043"
  }
]

يمكنك تنفيذ الأمر لنشر طلب جديد عدة مرات والتحقّق من نقاط مكافأة العميل باستخدام الأمر curl.

نشر رسالة طلب جديد:

export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'

التحقّق من نقاط مكافآت العملاء:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $CUSTOMER_SERVICE_URL/customer | jq

إثبات صحة السجلّات استبدِل رقم تعريف المشروع(qwiklabs-gcp-01-1a990bfcadb3) برقم تعريف مشروعك الحالي.

gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND logName=projects/qwiklabs-gcp-01-1a990bfcadb3/logs/Workflows AND jsonPayload.totalAmount > 2 AND timestamp >= "2022-11-01T23:59:59Z" AND timestamp <= "2023-11-05T00:00:00Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"

9. تهانينا!

تهانينا، لقد أنهيت الدرس التطبيقي حول الترميز.

المواضيع التي تناولناها:

  • كيفية ضبط Workflows
  • طريقة ضبط مشغِّل Eventarc لسير العمل
  • كيفية طلب خدمة Cloud Run من Workflows
  • كيفية طلب البحث عن السجلّات المنظَّمة في Cloud Logging واستخدام gcloud CLI

الخطوة التالية:

اطّلع على الدروس التطبيقية الأخرى حول الترميز في Cymbal Eats:

تَنظيم

لتجنُّب تحمُّل الرسوم المفروضة على حسابك على Google Cloud مقابل الموارد المُستخدَمة في هذا الدليل التوجيهي، يمكنك إما حذف المشروع الذي يحتوي على الموارد أو الاحتفاظ بالمشروع وحذف الموارد الفردية.

حذف المشروع

أسهل طريقة لإزالة الفوترة هي حذف المشروع الذي أنشأته للبرنامج التعليمي.