1. סקירה כללית
בשיעור ה-Lab הזה תיצרו טריגר Eventarc שמקשר נושא Pub/Sub לשירות Workflows. Eventarc מאפשר לכם להפריד בין תקשורת משירות לשירות, וכך להפוך את הפתרון שלכם לניתן להרחבה יותר ומבוסס-אירועים. תצרו תהליך עבודה שכולל כמה שלבים לביצוע תהליך עסקי לחישוב נקודות בתוכנית התגמולים של לקוחות שמזמינים ב-Cymbal Eats. תהליך העבודה יפעיל API של שירות Cloud Run פרטי כדי להריץ לוגיקה עסקית. שירות Cloud Run מוגדר כך שהוא מאפשר רק תנועה פנימית ודורש אימות. Workflows יפרסם הודעה בנושא Pub/Sub כדי להודיע לשירות ההזמנות על נקודות בתוכנית התגמולים שחושבו.
מה זה Eventarc?
Eventarc מאפשר לכם לבנות ארכיטקטורות מבוססות-אירועים בלי שתצטרכו להטמיע, להתאים אישית או לתחזק את התשתית הבסיסית. Eventarc מציע פתרון סטנדרטי לניהול של זרימת שינויים במצב, שנקראים אירועים, בין מיקרו-שירותים מנותקים. כשאירועים מופעלים, Eventarc מעביר אותם דרך מינויים ל-Pub/Sub ליעדים שונים (לדוגמה, Workflows או Cloud Run) תוך ניהול המסירה, האבטחה, ההרשאה, יכולת הצפייה וטיפול בשגיאות בשבילכם.
ספקי אירועים של Google
- יותר מ-90 ספקי Google Cloud. הספקים האלה שולחים אירועים ישירות מהמקור (לדוגמה, Cloud Storage) או דרך רשומות ביומני ביקורת של Cloud.
- ספקי Pub/Sub. הספקים האלה שולחים אירועים ל-Eventarc באמצעות הודעות Pub/Sub.
ספקי צד שלישי
ספקי צד שלישי הם ישויות שאינן Google שמציעות מקור Eventarc.
טריגרים של Eventarc
- אירועים של Cloud Pub/Sub. אפשר להפעיל את Eventarc באמצעות הודעות שמתפרסמות בנושאי Pub/Sub.
- אירועים ביומני ביקורת של Cloud (CAL). יומני הביקורת ב-Cloud מספקים יומני ביקורת של פעילות האדמין וגישה לנתונים לכל פרויקט בענן, תיקייה וארגון.
- אירועים ישירים. אפשר להפעיל את Eventarc באמצעות אירועים ישירים שונים, כמו עדכון של קטגוריה ב-Cloud Storage או עדכון של תבנית של הגדרת תצורה מרחוק ב-Firebase.
יעדים של אירועים
- תהליכי עבודה
- Cloud Run
- GKE
- Cloud Functions( דור שני)

מה זה Workflows?
Workflows הוא שירות שמנוהל במלואו שמאפשר לשלב מיקרו-שירותים, משימות וממשקי API. Workflows הוא שירות בלי שרת (serverless), והוא יותאם לביקוש שלכם.
תרחישים לדוגמה לשימוש ב-Workflows:
- תהליכי עבודה מבוססי-אירועים מופעלים על ידי טריגרים מוגדרים. לדוגמה, כשנשלחת הזמנה חדשה ואתם רוצים לחשב נקודות מועדון לקוחות. או כשמבטלים הזמנה, אפשר לפרסם את האירוע וכל השירותים שמתעניינים בו יעבדו אותו.
- תהליכי עבודה של משימות באצווה מריצים משימות על בסיס קבוע באמצעות Cloud Scheduler. לדוגמה, משימה שמתבצעת מדי לילה כדי לבדוק אם יש פריטים בתפריט עם סטטוס 'נכשל' ולמחוק אותם.
Workflows הוא כלי אידיאלי לתזמור של שירותים בתהליכי עבודה. אפשר להגדיר תהליכים אוטומטיים שכוללים המתנה וניסיונות חוזרים למשך עד שנה.
היתרונות של Workflows:
- הגדרה במקום קוד: אפשר לצמצם את החוב הטכני על ידי העברת הלוגיקה להגדרה במקום כתיבת קוד.
- מפשטים את הארכיטקטורה. תהליכי עבודה עם שמירת מצב מאפשרים לכם לראות ולעקוב אחרי שילובים מורכבים של שירותים בלי תלות נוספת.
- משלבים אמינות ועמידות בפני תקלות. שליטה בכשלים באמצעות לוגיקה של ניסיון חוזר וטיפול בשגיאות, גם אם מערכות אחרות נכשלות – יצירת נקודות ביקורת בכל שלב ב-Cloud Spanner כדי לעזור לכם לעקוב אחר ההתקדמות.
- ללא כל תחזוקה. התאמה לפי הצורך: אין צורך בתיקון או בתחזוקה. משלמים רק כשהתהליכי העבודה פועלים, ואין עלות בזמן ההמתנה או כשהם לא פעילים.
בשיעור ה-Lab הזה תגדירו תהליך עבודה מבוסס-אירועים.
מה תלמדו
בשיעור Lab זה תלמדו איך:
- הגדרת נושא Pub/Sub ו-Eventarc להפעלת Workflows
- הגדרת Workflow לקריאה לשירות Cloud Run ופרסום הודעות ב-Pub/Sub
- איך שולחים שאילתות ליומנים מובנים של Workflows ב-Cloud Logging באמצעות ה-CLI של gcloud
דרישות מוקדמות
- ההנחה בשיעור ה-Lab הזה היא שאתם מכירים את הסביבות של Cloud Console ו-Cloud Shell.
- ניסיון קודם עם Cloud Run ו-Cloud Pub/Sub יכול לעזור, אבל הוא לא חובה.
2. הגדרה ודרישות
הגדרה של פרויקט ב-Cloud
- נכנסים ל-מסוף Google Cloud ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.



- שם הפרויקט הוא השם המוצג של הפרויקט הזה למשתתפים. זו מחרוזת תווים שלא נמצאת בשימוש ב-Google APIs. אפשר לעדכן את המיקום הזה בכל שלב.
- מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud, והוא קבוע (אי אפשר לשנות אותו אחרי שהוא מוגדר). מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית, ובדרך כלל לא צריך לדעת מה היא. ברוב ה-Codelabs, תצטרכו להפנות למזהה הפרויקט (בדרך כלל הוא מסומן כ-
PROJECT_ID). אם אתם לא אוהבים את המזהה שנוצר, אתם יכולים ליצור מזהה אקראי אחר. אפשר גם לנסות שם משתמש משלכם ולבדוק אם הוא זמין. אי אפשר לשנות את ההגדרה הזו אחרי השלב הזה, והיא תישאר כזו למשך הפרויקט. - לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. במאמרי העזרה מפורט מידע נוסף על שלושת הערכים האלה.
- בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבי Cloud או בממשקי API של Cloud. העלות של התרגול הזה לא אמורה להיות גבוהה, ואולי אפילו לא תצטרכו לשלם בכלל. כדי להשבית את המשאבים ולא לחייב אתכם מעבר למדריך הזה, אתם יכולים למחוק את המשאבים שיצרתם או למחוק את כל הפרויקט. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
הגדרת הסביבה
לוחצים על הסמל משמאל לסרגל החיפוש כדי להפעיל את Cloud Shell.

משכפלים את המאגר ועוברים לספרייה, מעתיקים את הפקודה שבהמשך ומדביקים אותה בטרמינל, ואז מקישים על 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 יוכלו לתקשר עם מסד נתונים של AlloyDB
- משימה ב-Cloud Run ליצירת מסד נתונים ב-AlloyDB
- שירות לקוחות של Cloud Run – מיקרו-שירות מבוסס-Java שמשתמש ב-Quarkus framework.
./lab-setup.sh
אם מתבקשים לאשר, לוחצים על 'אישור' כדי להמשיך.

תהליך ההגדרה יימשך כ-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
תהליך עבודה מורכב מסדרה של שלבים שמתוארים באמצעות התחביר של Workflows( YAML או JSON).
אחרי שיוצרים תהליך עבודה, הוא נפרס, כך שהוא מוכן להרצה.
הרצה היא הפעלה יחידה של הלוגיקה שמוגדרת בתהליך עבודה. תהליך עבודה שלא בוצע לא יוצר חיובים. כל ההרצות של תהליכי העבודה הן עצמאיות, וההתאמה המהירה של המוצר מאפשרת מספר גבוה של הרצות בו-זמניות.
אמצעי בקרה על ביצוע בקשות
- שלבים – כדי ליצור תהליך עבודה, מגדירים את
stepsואת סדר הביצוע הרצויים באמצעות התחביר של Workflows. כל תהליך עבודה חייב לכלול לפחות שלב אחד. - תנאים – אפשר להשתמש בבלוק
switchכמנגנון בחירה שמאפשר לערך של ביטוי לשלוט בזרימת הביצוע של תהליך עבודה. - איטרציות – אפשר להשתמש בלולאת
forכדי לבצע איטרציה על רצף של מספרים או על אוסף נתונים, כמו רשימה או מפה. - תת-תהליכי עבודה – תת-תהליך עבודה פועל באופן דומה לשגרה או לפונקציה בשפת תכנות, ומאפשר לכם להגדיר שלב או קבוצת שלבים שתהליך העבודה יחזור עליהם כמה פעמים.
הפעלת הרצות
- ידני – אתם יכולים לנהל את תהליכי העבודה ממסוף Google Cloud או משורת הפקודה באמצעות Google Cloud CLI.
- באופן פרוגרמטי – אפשר להשתמש בספריות הלקוח של Cloud ל-Workflows API או ב-API בארכיטקטורת REST כדי לנהל את תהליכי העבודה.
- מתוזמן – אפשר להשתמש ב-Cloud Scheduler כדי להריץ תהליך עבודה לפי לוח זמנים מסוים.
ארגומנטים של זמן ריצה
אפשר לגשת לנתונים שמועברים בזמן הריצה על ידי הוספת שדה params לתהליך העבודה הראשי (שמוצב בבלוק ראשי). הבלוק הראשי מקבל ארגומנט יחיד שהוא כל סוג נתונים חוקי של JSON. בשדה params מציינים את שם המשתנה שבו ישתמש תהליך העבודה כדי לאחסן את הנתונים שמעבירים.
תהליך העבודה לאימות שירות Cloud Run
שירות הלקוחות הוא אפליקציה לדוגמה שכלולה במאגר הזה, שפועלת ב-Cloud Run ומוגדרת כך שהיא מאפשרת רק בקשות מאומתות שמגיעות מרשתות פנימיות. תגדירו את Workflows כך שיוסיף לבקשה אסימון OpenID Connect (OIDC) בחתימת Google כדי לבצע אימות עם שירות Cloud Run.
מידע נוסף על אימות בין שירותים
האימות של זרימת העבודה מוגדר בקטע auth בבלוק args.
rewardsWorkflow.yaml.tmpl
- create_customer:
call: http.post
args:
url: CUSTOMER_SERVICE_URL/customer
auth:
type: OIDC
הלוגיקה של תהליך העבודה
אם הלקוח לא קיים, תהליך העבודה הזה יבצע קריאה ל-API כדי ליצור לקוח, ואז יעדכן את נקודות התגמול. על סמך הסכום הכולל של ההזמנה, תהליך העבודה יבחר מכפיל לחישוב נקודות המועדון של הלקוח. פרטים נוספים מופיעים בדוגמה שבהמשך.
- 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}

4. הגדרה ופריסה של תהליך עבודה
מגדירים משתני סביבה:
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
הגדרת מיקום למשתני סביבה של שירות Workflows ושל הפרויקט:
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)')
יוצרים חשבון שירות מותאם אישית לתהליך העבודה עם ההרשאות הבאות:
- הפעלת שירות Cloud Run
- Call Logging APIs
- פרסום הודעות בנושא 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
בודקים את המקור של תהליך העבודה ופרטים אחרים(בכרטיסייה Triggers). כרגע לא מוגדרים טריגרים להפעלת תהליך העבודה הזה. בשלב הבא תגדירו את זה.

5. הגדרת נושאים ב-Pub/Sub וטריגר Eventarc
בשלב הבא יוצרים שני נושאים ב-Pub/Sub ומגדירים טריגר אחד ב-Eventarc.
שירות ההזמנות יפרסם הודעות ב-order-topic עם מידע על הזמנות חדשות.
תהליך העבודה יפרסם הודעות ב-order-points-topic עם מידע על נקודות בתוכנית התגמולים של ההזמנה והסכום הכולל. שירות ההזמנות(לא נפרס כחלק מתוכנית Lab זו) חושף נקודת קצה שמשמשת את מינוי הדחיפה ל-order-points-topic, כדי לעדכן את נקודות בתוכנית התגמולים ואת הסכום הכולל לכל הזמנה.
יצירת נושאים חדשים ב-Pub/Sub:
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.
בודקים את הטריגר של Eventarc שנוצר.

בודקים את המינוי שנוצר לטריגר.

בודקים את השינויים בצד של תהליך העבודה. נוסף טריגר חדש.

6. בדיקת תהליך העבודה
כדי לדמות את שירות ההזמנות, תשלחו הודעות לנושא Pub/Sub מ-Cloud Shell ותאמתו את היומנים של שירות הלקוחות של Cloud Run במסוף Cloud.
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'
בודקים את פרטי ההרצה של תהליך העבודה ואת היומנים.


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 במסוף ומריצים שאילתה לגבי הזמנות שעברו עיבוד עם סכום כולל של יותר מ-2$.
משתמשים בשאילתה שלמטה ומחליפים את מזהה הפרויקט(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"
פלט לדוגמה:

פותחים את Cloud Shell ומשתמשים ב-ה-CLI של gcloud כדי לקרוא יומנים באמצעות הפקודות שבהמשך.
מחליפים את מזהה הפרויקט(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:

מחליפים את מזהה הפרויקט(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:

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>
כדי לראות רשומות קיימות של לקוחות, משנים את ההגדרות של ingress ב-Cloud Run customer-service לאפשרות Allow all traffic ולוחצים על 'שמירה'.
כך נקודת הקצה תהיה ציבורית ותוכלו לקרוא ל-API של שירות הלקוחות מ-Cloud Shell באמצעות curl.

מריצים את הפקודות שלמטה כדי לשמור את כתובת ה-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. מעולה!
כל הכבוד, סיימתם את ה-Codelab!
הנושאים שדיברנו עליהם:
- איך מגדירים תהליכי עבודה
- איך מגדירים טריגר Eventarc ל-Workflows
- איך קוראים לשירות Cloud Run מ-Workflows
- איך שולפים נתונים מיומנים מובנים ב-Cloud Logging באמצעות ה-CLI של gcloud
השלב הבא:
כדאי לעיין במדריכי Codelab נוספים של Cymbal Eats:
- הפעלת עיבוד אירועים מ-Cloud Storage
- התחברות ל-Cloud SQL פרטי מ-Cloud Run
- חיבור למסדי נתונים מנוהלים באופן מלא מ-Cloud Run
- אבטחת אפליקציה ללא שרת באמצעות שרת proxy לאימות זהויות (IAP)
- הפעלת משימות של Cloud Run באמצעות Cloud Scheduler
- פריסה מאובטחת ב-Cloud Run
- אבטחת תנועת נתונים נכנסת ב-Cloud Run
- התחברות ל-AlloyDB פרטי מ-GKE Autopilot
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.
