1. מבוא

Cloud Run מאפשר להריץ קונטיינרים בלי שמירת מצב בסביבה מנוהלת. הוא מבוסס על Knative בקוד פתוח, ומאפשר לכם לבחור אם להריץ את הקונטיינרים שלכם בניהול מלא באמצעות Cloud Run, או באשכול Google Kubernetes Engine באמצעות Cloud Run for Anthos.

Eventarc מאפשר לחבר בקלות שירותים שונים (Cloud Run, Cloud Functions, Workflows) לאירועים ממגוון מקורות. הוא מאפשר לכם לבנות ארכיטקטורות מבוססות-אירועים שבהן מיקרו-שירותים (microservices) מצומדים בצורה חלשה ומפוזרים. השירות גם מטפל בהעברה, באספקה, באבטחה, בהרשאה ובטיפול בשגיאות של אירועים, וכך משפר את הגמישות של המפתחים ואת עמידות האפליקציה.
ב-Codelab הזה תלמדו על Eventarc. באופן ספציפי יותר, תקשיבו לאירועים מ-Pub/Sub, מ-Cloud Storage ומיומני הביקורת של Cloud באמצעות Eventarc ותעבירו אותם לשירות Cloud Run.
מה תלמדו
- החזון של Eventarc
- חיפוש אירועים ב-Eventarc
- יצירת יעד ב-Cloud Run
- יצירת טריגר ל-Pub/Sub
- יצירת טריגר ל-Cloud Storage
- יצירת טריגר ליומני ביקורת ב-Cloud
- הכרת ממשק המשתמש של 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 ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.



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

יחלפו כמה רגעים עד שההקצאה והחיבור לסביבת העבודה יושלמו. בסיום התהליך, אמור להופיע משהו כזה:

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את כל העבודה ב-Lab הזה רק באמצעות דפדפן.
לפני שמתחילים
ב-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 מתעד ביומן את גוף ההודעה הנכנסת. אפשר לראות את זה בקטע Logs (יומנים) של מופע 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
למרות שטריגר של Cloud Storage הוא הדרך הטובה יותר להאזין לאירועים ב-Cloud Storage, בשלב הזה יוצרים טריגר של יומן ביקורת ב-Cloud כדי לעשות את אותו הדבר.
הגדרה
כדי לקבל אירועים משירות, צריך להפעיל את Cloud Audit Logs. בתפריט הימני העליון של 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. בממשק המשתמש של Eventarc, אפשר לקבל סקירה כללית של כל הטריגרים, לערוך ולמחוק אותם וליצור טריגרים חדשים מתוך מסוף Google Cloud.
עוברים לקטע Eventarc ב-Google Cloud:

תוצג רשימת הטריגרים שיצרתם קודם:

אם לוחצים על טריגר, אפשר לראות את הפרטים שלו, לערוך אותו או למחוק אותו:

אפשר גם ליצור טריגר חדש. כדי לעשות את זה, בוחרים באפשרות Create trigger ומזינים את פרטי הטריגר:

10. מעולה!
כל הכבוד, סיימתם את ה-Codelab.
מה נכלל
- החזון של Eventarc
- חיפוש אירועים ב-Eventarc
- יצירת יעד ב-Cloud Run
- יצירת טריגר ל-Pub/Sub
- יצירת טריגר ל-Cloud Storage
- יצירת טריגר ליומני ביקורת ב-Cloud
- הכרת ממשק המשתמש של Eventarc