1. סקירה כללית
בשיעור ה-Lab הזה תיצרו טריגר של Eventarc שמחבר נושא Pub/Sub לשירות Workflows. באמצעות Eventarc תוכלו להפריד בין השירותים לתקשורת בין השירותים, כך שהפתרון שלכם יהיה מבוסס יותר על אירועים ומורחב יותר. צריך ליצור תהליך עבודה שכולל כמה שלבים לביצוע תהליך עסקי כדי לחשב את נקודות הפרסים של הלקוחות על הזמנה ב-Cymbal Eats. תהליך העבודה יקרא ל-API של שירות Cloud Run פרטי כדי להפעיל לוגיקה עסקית. שירות Cloud Run מוגדר לאפשר רק תעבורת נתונים פנימית והוא דורש אימות. בתהליך העבודה, יפורסמו הודעה בנושא Pub/Sub כדי ליידע את שירות ההזמנות לגבי נקודות תגמול מחושבות.
מה זה Eventarc?
Eventarc מאפשר לפתח ארכיטקטורות מבוססות-אירועים בלי שתצטרכו להטמיע, להתאים אישית או לתחזק את התשתית עצמה. חברת Eventarc מציעה פתרון סטנדרטי לניהול זרימת השינויים במצב (State) שנקרא 'אירועים', בין מיקרו-שירותים (microservices) מופרדים. כשהאירוע מופעל, Eventarc מנתב את האירועים האלה דרך מינויי Pub/Sub ליעדים שונים (לדוגמה: תהליכי עבודה או Cloud Run) בזמן ניהול מסירה, אבטחה, הרשאה, ניראות (observability) וטיפול בשגיאות.
ספקי אירועים של Google
- יותר מ-90 ספקים של Google Cloud. הספקים האלה שולחים אירועים ישירות מהמקור (למשל מ-Cloud Storage) או דרך רשומות ביומני הביקורת של Cloud.
- ספקי Pub/Sub. הספקים האלה שולחים אירועים ל-Eventarc באמצעות הודעות Pub/Sub.
ספקי צד שלישי
ספקי צד שלישי הם ישויות שאינן של Google שמציעות מקור של Eventarc.
טריגרים של Eventarc
- אירועי Cloud Pub/Sub. אפשר להפעיל Eventarc על ידי הודעות שפורסמו בנושאי Pub/Sub.
- אירועים של יומני ביקורת של Cloud (CAL). יומני הביקורת של Cloud מספקים את יומני הביקורת Admin Activity ו-Data Access לכל פרויקט, תיקייה וארגון ב-Cloud.
- אירועים ישירים. אפשר להפעיל את Eventarc על ידי אירועים ישירים שונים, כמו עדכון לקטגוריה של Cloud Storage או עדכון של תבנית להגדרת תצורה מרחוק ב-Firebase.
יעדי אירועים
- תהליכי עבודה
- Cloud Run
- GKE
- Cloud Functions( דור שני)
מהם תהליכי עבודה?
Workflows הוא שירות מנוהל שמאפשר לשלב מיקרו-שירותים, משימות וממשקי API. Workflows הוא שירות ללא שרת (serverless), וההיקף שלו ישתנה כדי לעמוד בביקוש.
תרחישים לדוגמה של תהליכי עבודה:
- תהליכי עבודה מבוססי-אירועים מופעלים בטריגרים מוגדרים. לדוגמה, אם נשלחת הזמנה חדשה ואתם רוצים לחשב את נקודות הנאמנות של הלקוח. אם ההזמנה מבוטלת, אפשר לפרסם את האירוע וכל השירותים הרלוונטיים יטפלו באירוע.
- תהליכי עבודה של משימות באצווה מריצים משימות על בסיס קבוע באמצעות Cloud Scheduler. לדוגמה, משימה לילית שבודקת אם יש אפשרויות בתפריט בסטטוס 'נכשל' ומוחקת אותן.
תהליכי עבודה אידיאליים לתהליכי עבודה מתזמרים שירותים. ניתן להפוך תהליכים אוטומטיים לתהליכים שכוללים המתנה וניסיונות חוזרים למשך עד שנה.
היתרונות של תהליכי עבודה:
- הגדרה באמצעות קוד: מצמצמים את החובות הטכניים על ידי העברת הלוגיקה להגדרה במקום כתיבת קוד.
- ארכיטקטורה פשוטה יותר. תהליכי עבודה עם שמירת מצב מאפשרים לכם לראות תצוגה חזותית של שילובי שירותים מורכבים ולעקוב אחריהם ללא יחסי תלות נוספים.
- שילוב של אמינות עמידות בכשלים. שליטה בכשלים עם לוגיקת ברירת מחדל או מותאמת אישית של ניסיונות חוזרים וטיפול בשגיאות גם כשמערכות אחרות נכשלות. כדי לעזור לכם לעקוב אחרי ההתקדמות, צריך לבצע בדיקה של כל שלב ל-Cloud Spanner.
- ללא תחזוקה. שנה גודל לפי הצורך: אין מה לתקן או לתחזק. משלמים רק כשתהליכי העבודה פועלים, ללא עלות בזמן המתנה או ללא פעילות.
בשיעור ה-Lab הזה תגדירו תהליך עבודה מבוסס-אירועים.
מה תלמדו
בשיעור Lab זה תלמדו איך:
- הגדרת נושא Pub/Sub ו-Eventarc כדי להפעיל תהליכי עבודה
- הגדרת תהליך העבודה לקריאה לשירות 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, עליכם ליצור חשבון.
- Project name הוא השם המוצג של המשתתפים בפרויקט. זו מחרוזת תווים שלא משמשת את Google APIs. אפשר לעדכן אותו בכל שלב.
- Project ID הוא ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי; בדרך כלל לא מעניין אותך מה זה. ברוב ה-Codelabs תצטרכו להפנות אל מזהה הפרויקט (בדרך כלל הוא מזוהה כ-
PROJECT_ID
). אם המזהה שנוצר לא מוצא חן בעיניך, יש לך אפשרות ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות תבנית משלך ולבדוק אם היא זמינה. לא ניתן לשנות אותו אחרי השלב הזה, והוא יישאר למשך הפרויקט. - לידיעתך, יש ערך שלישי – Project Number (מספר פרויקט), שחלק מממשקי ה-API משתמשים בו. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או בממשקי API של Cloud. מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. כדי להשבית את המשאבים ולא לצבור חיובים מעבר למדריך הזה, אתם יכולים למחוק את המשאבים שיצרתם או למחוק את הפרויקט כולו. משתמשים חדשים ב-Google Cloud זכאים להצטרף לתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
הגדרת סביבה
לוחצים על הסמל שמופיע מימין לסרגל החיפוש כדי להפעיל את 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 ולשירות לקוחות
- מחבר גישה ל-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. בדיקת תהליך העבודה
מושגי ליבה של תהליכי עבודה
תהליך עבודה מורכב מסדרה של שלבים שמתוארים באמצעות התחביר של תהליכי עבודה( YAML או JSON).
לאחר יצירת תהליך העבודה, הוא נפרס כדי להכין את תהליך העבודה לביצוע.
הפעלה היא הרצה אחת של הלוגיקה שכלולה בהגדרה של תהליך עבודה. תהליך עבודה שלא הופעל לא יוצר חיובים. כל תהליכי העבודה הם בלתי תלויים, וההתאמה המהירה לעומס של המוצר מאפשרת מספר רב של ביצוע בו-זמנית.
אמצעי בקרה לביצוע
- שלבים - כדי ליצור תהליך עבודה, מגדירים את
steps
ואת סדר הביצוע הרצויים באמצעות התחביר של תהליכי עבודה. כל תהליך עבודה חייב לכלול שלב אחד לפחות. - תנאים – ניתן להשתמש בבלוק
switch
כמנגנון בחירה המאפשר לערך של ביטוי לשלוט בתהליך הביצוע של תהליך עבודה. - איטרציות - אפשר להשתמש בלולאת
for
כדי לחזור על רצף של מספרים או באמצעות אוסף של נתונים, כמו רשימה או מפה. - תהליכי עבודה משניים – תהליך משנה פועל באופן דומה לתרחיש או לפונקציה בשפת תכנות, ומאפשר לכם לבצע שלב או קבוצה של שלבים שחוזרים על עצמם כמה פעמים.
הפעלת הפעלות
- ידני – אפשר לנהל את תהליכי העבודה ממסוף Google Cloud או משורת הפקודה באמצעות Google Cloud CLI.
- פרוגרמטי – אפשר להשתמש בספריות הלקוח ב-Cloud של Workflows API, או ב-API ל-REST, כדי לנהל תהליכי עבודה.
- Scheduled (תזמון) – אפשר להשתמש ב-Cloud Scheduler כדי להריץ תהליך עבודה לפי לוח זמנים מסוים.
ארגומנטים של זמן ריצה
כדי לגשת לנתונים שמועברים בזמן הריצה, צריך להוסיף שדה params
לתהליך העבודה הראשי (הם ממוקמים בבלוק ראשי). הבלוק הראשי מקבל ארגומנט יחיד, שהוא כל סוג חוקי של נתוני JSON. שדה הפרמטרים מציין את שם המשתנה שבו תהליך העבודה משתמש כדי לאחסן את הנתונים שאתם מעבירים.
אימות של שירות Cloud Run לגבי תהליך עבודה
שירות הלקוחות הוא אפליקציה לדוגמה שכלולה במאגר הזה, שפועלת ב-Cloud Run ומוגדרת לאפשר בקשות מאומתות שמגיעות מרשתות פנימיות בלבד. מגדירים את Workflows כדי להוסיף לבקשת אימות באמצעות שירות Cloud Run אסימון OpenID Connect(OIDC) בחתימה של Google.
למידע נוסף על אימות שירות לשירות, מומלץ לעיין בתיעוד.
אימות תהליך העבודה מוגדר בבלוק args
באמצעות הקטע auth
.
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
- ממשקי API לרישום שיחות
- פרסום הודעות בנושא 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
בודקים את המקור של תהליך העבודה ופרטים נוספים(הכרטיסייה 'טריגרים'). כרגע אין טריגרים שהוגדרו להפעלה של תהליך העבודה הזה. בשלב הבא מגדירים אותה.
5. הגדרת נושאי Pub/Sub וטריגר Eventarc
בשלב הבא צריך ליצור שני נושאי Pub/Sub ולהגדיר טריגר אחד של Eventarc.
שירות Order Service יפרסם הודעות ב-order-topic
עם מידע על הזמנות חדשות.
תהליך העבודה תפרסם הודעות אל order-points-topic
עם מידע על הנקודות בפרסים על ההזמנה והסכום הכולל. שירות Order Service (לא נפרס חלק משיעור ה-Lab הזה) חושף נקודת קצה (endpoint) שמשמשת במינוי Push ל-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 ולהעביר אותן לתהליכי עבודה.
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.
בודקים את המינוי שנוצר עבור הטריגר.
בודקים את השינויים בצד תהליך העבודה. נוסף טריגר חדש.
6. בדיקת תהליך העבודה
כדי לדמות את השירות Order Service, תצטרכו לשלוח הודעות לנושא 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>
כדי להציג רשומות של לקוחות קיימים, צריך לשנות את ההגדרות של Cloud Run customer-service
ingress ל-"Allow all traffic
וללחוץ על 'שמירה'.
נקודת הקצה תהפוך לגלויה לכולם ותוכלו לקרוא ל-Customer Service 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
השלב הבא:
בקישורים הבאים תוכלו למצוא עוד מעבדי קוד Labs של Cymbal Eats:
- הפעלת עיבוד אירועים מ-Cloud Storage
- התחברות ל-Cloud SQL פרטי מ-Cloud Run
- התחברות למסדי נתונים מנוהלים מ-Cloud Run
- אפליקציה מאובטחת ללא שרת (serverless) עם שרת proxy לאימות זהויות (IAP)
- הפעלת משימות של Cloud Run באמצעות Cloud Scheduler
- פריסה מאובטחת ב-Cloud Run
- אבטחת תעבורת נתונים נכנסת (ingress) ב-Cloud Run
- התחברות מ-GKE Autopilot אל אפליקציה פרטית מסוג AlloyDB
הסרת המשאבים
כדי להימנע מצבירת חיובים בחשבון Google Cloud על המשאבים שנעשה בהם שימוש במדריך הזה, צריך למחוק את הפרויקט שמכיל את המשאבים או לשמור את הפרויקט ולמחוק את המשאבים הספציפיים.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.