פרסום אירועים ממקור של Google
אתם יכולים להפעיל את האפשרות לאיסוף ולפרסום של אירועים ממקורות של Google. מידע נוסף מופיע במאמר פרסום אירועים ממקורות של Google.
במדריך למתחילים הזה נסביר איך לפרסם ולקבל הודעות על אירועים באמצעות יצירה של Eventarc Advanced bus והרשמה לפרויקט שלכם ב- Google Cloud.
אוטובוס פועל כנתב מרכזי שמקבל הודעות ממקורות אירועים או שספקים מפרסמים.
הרשמה מנתבת הודעות שהתקבלו באוטובוס ליעד אחד או יותר דרך צינור עיבוד.
במדריך למתחילים הזה:
פריסת שירות לקבלת אירועים ב-Cloud Run.
יוצרים אוטובוס מתקדם של Eventarc.
הפעלת אירועים ממקורות של Google.
יצירת הרשמה ל-Eventarc Advanced.
כדי לפרסם הודעת אירוע באוטובוס, צריך ליצור תהליך עבודה.
צפייה בנתוני האירועים ביומנים של Cloud Run.
אפשר להשלים את המדריך למתחילים הזה באמצעות ה-CLI של gcloud.
לפני שמתחילים
יכול להיות שהגבלות אבטחה שהוגדרו בארגון שלכם ימנעו מכם להשלים את השלבים הבאים. מידע לפתרון בעיות זמין במאמר פיתוח אפליקציות בסביבה מוגבלת. Google Cloud
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את ממשקי ה-API של Artifact Registry, Cloud Build, Cloud Run, Eventarc ו-Workflows:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com -
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
יוצרים או בוחרים Google Cloud פרויקט.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של פרויקט Google Cloud שיוצרים. -
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מפעילים את ממשקי ה-API של Artifact Registry, Cloud Build, Cloud Run, Eventarc ו-Workflows:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com eventarc.googleapis.com eventarcpublishing.googleapis.com run.googleapis.com workflows.googleapis.com - עדכון רכיבים של
gcloud:gcloud components update
- נכנסים באמצעות החשבון:
gcloud auth login
- מגדירים את משתנה ההגדרה שמשמש במדריך הזה להתחלה מהירה:
REGION=REGION
מחליפים את
REGIONבמיקום נתמך של האוטובוס, לדוגמהus-central1. -
אם אתם יוצרי הפרויקט, מוקצה לכם תפקיד הבעלים הבסיסי (
roles/owner). כברירת מחדל, תפקיד ניהול הזהויות והרשאות הגישה (IAM) הזה כולל את ההרשאות שנדרשות לגישה מלאה לרוב המשאבים Google Cloud, ואפשר לדלג על השלב הזה.אם אתם לא יוצרי הפרויקט, צריך להעניק את ההרשאות הנדרשות בחשבון המשתמש המתאים בפרויקט. לדוגמה, חשבון משתמש יכול להיות חשבון Google (למשתמשי קצה) או חשבון שירות (לאפליקציות ולעומסי עבודה ממוחשבים).
שימו לב: כברירת מחדל, ההרשאות של Cloud Build כוללות הרשאות להעלאה ולהורדה של ארטיפקטים של Artifact Registry.
ההרשאות הנדרשות
כדי לקבל את ההרשאות שדרושות לביצוע ההפעלה המהירה הזו, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- עריכה ב-Cloud Build (
roles/cloudbuild.builds.editor) - אדמין ב-Cloud Run (
roles/run.admin) - מפתח Eventarc (
roles/eventarc.developer) - אדמין באוטובוס ההודעות של Eventarc (
roles/eventarc.messageBusAdmin) - בעל הרשאת גישה לתצוגת יומנים (
roles/logging.viewAccessor) - אדמין IAM בפרויקט (
roles/resourcemanager.projectIamAdmin) - אדמין בחשבון שירות (
roles/iam.serviceAccountAdmin) - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) - אדמין Service Usage (
roles/serviceusage.serviceUsageAdmin) - עורך תהליכי עבודה (
roles/workflows.editor)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- עריכה ב-Cloud Build (
- לצורך בדיקה, יוצרים חשבון שירות ומעניקים לו את התפקידים שנדרשים כדי להשלים את המדריך הזה.
- יוצרים חשבון שירות:
מחליפים אתgcloud iam service-accounts create SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAMEבשם שרוצים לתת לחשבון השירות. - מעניקים את התפקידים שנדרשים כדי ליצור ולפרוס קובץ אימג' של קונטיינר, וכדי לייצג את הזהות של צינור מתקדם של Eventarc Advanced:
- כותב של Artifact Registry: להעלאת פריטי מידע שנוצרו בתהליך פיתוח (Artifact) ב-Artifact Registry
- Logs Writer: כדי לכתוב יומנים ב-Cloud Logging
- אדמין של אחסון: כדי לגשת לאובייקטים ב-Cloud Storage
- Cloud Run Invoker: כדי להתקשר אל Cloud Run
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/artifactregistry.writer gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/storage.admin gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role=roles/run.invoker
שימו לב שאפשר להגדיר מי יכול לגשת לשירות Cloud Run באחת מהדרכים הבאות:
- נותנים הרשאה לחשבונות שירות או לקבוצות נבחרים כדי לאפשר גישה לשירות. כל הבקשות חייבות לכלול כותרת הרשאה של HTTP שמכילה אסימון OpenID Connect שחתום על ידי Google עבור אחד מחשבונות השירות המורשים. כך מוגדרת הגישה במדריך למתחילים הזה.
- נותנים הרשאה ל-
allUsersכדי לאפשר גישה לא מאומתת.
מידע נוסף זמין במאמר בקרת גישה ל-Cloud Run.
- יוצרים חשבון שירות:
פריסת שירות לקבלת אירועים ב-Cloud Run
פריסת שירות Cloud Run כיעד לאירועים שמתעד את התוכן של אירוע. יש תמיכה ביעדים אחרים של אירועים, כמו נושא Pub/Sub, Workflows או נקודת קצה של HTTP. מידע נוסף זמין במאמר בנושא ספקי אירועים ויעדים.
יוצרים מאגר רגיל של Artifact Registry כדי לאחסן את קובץ אימג' של קונטיינר.
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=$REGION
מחליפים את
REPOSITORYבשם ייחודי למאגר Artifact Registry, לדוגמה,my-repo.משכפלים את המאגר מ-GitHub:
git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
עוברים לספרייה שמכילה את הקוד לדוגמה של Cloud Run:
cd eventarc-samples/eventarc-advanced-quickstart/
יוצרים קובץ אימג' של קונטיינר Docker ומעבירים אותו בדחיפה למאגר:
gcloud builds submit \ --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1 \ --service-account=projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --default-buckets-behavior=regional-user-owned-bucket
פורסים את קובץ האימג' של הקונטיינר ב-Cloud Run:
gcloud run deploy SERVICE_NAME \ --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/log-events:v1 \ --platform managed \ --ingress all \ --no-allow-unauthenticated \ --region=$REGION
מחליפים את
SERVICE_NAMEבשם השירות, לדוגמה,my-service.שימו לב לנקודות הבאות:
הדגל
--platformמגדיר את פלטפורמת היעד, ובמקרה הזה מדובר בגרסה מנוהלת מלאה של Cloud Run.הגדרת הכניסה של
allמאפשרת את כל הבקשות, כולל בקשות ישירות מהאינטרנט לכתובת ה-URL שלrun.app. מידע נוסף זמין במאמר הגבלת תעבורת רשת נכנסת ב-Cloud Run.הדגל
--no-allow-unauthenticatedמגדיר את השירות כך שהוא יאפשר רק הפעלות מאומתות.כשכתובת ה-URL של שירות Cloud Run מופיעה, הפריסה הושלמה.
מעתיקים ושומרים את כתובת ה-URL של שירות Cloud Run, כי תצטרכו אותה בשלב הבא.
יצירת אוטובוס Eventarc Advanced
אוטובוס מקבל הודעות על אירועים ממקור הודעות או מפרסום של ספק, ופועל כנתב הודעות.
מידע נוסף זמין במאמר יצירת אוטובוס להעברת הודעות.
יוצרים אוטובוס Eventarc Advanced בפרויקט באמצעות הפקודה gcloud eventarc message-buses create:
gcloud eventarc message-buses create BUS_NAME \ --location=$REGION
מחליפים את BUS_NAME במזהה של האוטובוס או בשם מלא, לדוגמה, my-bus.
הפעלת אירועים ממקורות של Google
כדי לפרסם אירועים ממקורות של Google, צריך ליצור משאב GoogleApiSource. המשאב הזה מייצג מינוי לאירועים של Google API עבור אוטובוס Eventarc Advanced מסוים בפרויקט ובאזור ספציפיים. Google Cloud
מפעילים אירועים ממקורות של Google באמצעות הפקודה gcloud eventarc google-api-sources create:
gcloud eventarc google-api-sources create GOOGLE_API_SOURCE_NAME \ --destination-message-bus=BUS_NAME \ --destination-message-bus-project=PROJECT_ID \ --location=$REGION
מחליפים את GOOGLE_API_SOURCE_NAME במזהה של משאב GoogleApiSource או בשם מוגדר במלואו, לדוגמה, my-google-api-source.
כל סוגי האירועים הנתמכים של Google שנשלחים ישירות ממקור של Google נאספים עכשיו ומתפרסמים באוטובוס.
יצירת רישום ל-Eventarc Advanced
ההרשמה קובעת אילו הודעות ינותבו ליעד, ומציינת את צינור הנתונים שמשמש להגדרת יעד להודעות האירועים.
מידע נוסף מופיע במאמר בנושא יצירת רישום לקבלת אירועים.
כשמשתמשים ב-CLI של gcloud, קודם יוצרים צינור, ואז יוצרים הרשמה:
יוצרים פייפליין באמצעות הפקודה
gcloud eventarc pipelines create:gcloud eventarc pipelines create PIPELINE_NAME \ --destinations=http_endpoint_uri='CLOUD_RUN_SERVICE_URL',google_oidc_authentication_service_account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=$REGION
מחליפים את מה שכתוב בשדות הבאים:
-
PIPELINE_NAME: המזהה של צינור הנתונים או שם מלא, לדוגמהmy-pipeline. -
CLOUD_RUN_SERVICE_URL: כתובת ה-URL המלאה של שירות Cloud Run, לדוגמה,https://SERVICE_NAME-abcdef-uc.a.run.app. זהו היעד של הודעות האירועים.
שימו לב שהמפתח
google_oidc_authentication_service_accountמציין כתובת אימייל של חשבון שירות שמשמשת ליצירת אסימון OIDC.-
כדי ליצור הרשמה, משתמשים בפקודה
gcloud eventarc enrollments create:gcloud eventarc enrollments create ENROLLMENT_NAME \ --cel-match=MATCH_EXPRESSION \ --destination-pipeline=PIPELINE_NAME \ --message-bus=BUS_NAME \ --message-bus-project=PROJECT_ID \ --location=$REGION
מחליפים את מה שכתוב בשדות הבאים:
-
ENROLLMENT_NAME: המזהה של ההרשמה או שם מוגדר במלואו, לדוגמהmy-enrollment.
MATCH_EXPRESSION: ביטוי ההתאמה להרשמה הזו באמצעות CEL. לדוגמה, כדי לפרסם הודעות אירועים בכל פעם שנוצר תהליך עבודה של Workflows, משתמשים בביטוי הבא:"message.type == 'google.cloud.workflows.workflow.v1.created'"
-
פרסום הודעת אירוע באוטובוס על ידי יצירת תהליך עבודה
Workflows היא פלטפורמה מנוהלת במלואה לתזמור שירותים בסדר שאתם מגדירים: תהליך עבודה. יוצרים תהליך עבודה ליצירת סוג אירוע נתמך ממקור של Google.
בספריית הבית, יוצרים קובץ חדש בשם
myWorkflow.yaml.מעתיקים את תהליך העבודה הבא ומדביקים אותו בקובץ החדש, ואז שומרים אותו:
- getCurrentTime: call: http.get args: url: https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam result: currentTime - readWikipedia: call: http.get args: url: https://en.wikipedia.org/w/api.php query: action: opensearch search: ${currentTime.body.dayOfWeek} result: wikiResult - returnResult: return: ${wikiResult.body[1]}בתהליך העבודה הזה, היום הנוכחי בשבוע מועבר כמונח חיפוש אל Wikipedia API. מוחזרת רשימה של מאמרים קשורים בוויקיפדיה.
מפעילים את תהליך העבודה ומשייכים אותו לחשבון השירות שצוין באמצעות הפקודה
gcloud workflows deploy:gcloud workflows deploy myWorkflow --source=myWorkflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --location=$REGION
צפייה בנתוני האירועים ביומנים של Cloud Run
אחרי שמפרסמים אירוע באוטובוס Eventarc Advanced, אפשר לבדוק את היומנים של שירות Cloud Run כדי לוודא שהאירוע התקבל כמצופה.
כדי לסנן את הרשומות ביומן ולהחזיר את הפלט, משתמשים בפקודה
gcloud logging read:gcloud logging read 'textPayload: "google.cloud.workflows.workflow.v1.created"'
מחפשים רשומה ביומן שדומה לזו:
insertId: 689644c30004cde066603b3a labels: instanceId: 0069c7a98846e3b870396a63478212b9642512ef362b67c33090846e10498949c671ccfefbc66f4f093796406e9a714bebc6fbb82f321578134ef95e56f9e9986c3265d2820b56f7994617ba7172ab logName: projects/PROJECT_ID/logs/run.googleapis.com%2Fstderr receiveTimestamp: '2025-08-08T18:41:07.632226222Z' resource: labels: ... type: cloud_run_revision textPayload: 'Ce-Type: google.cloud.workflows.workflow.v1.created' timestamp: '2025-08-08T18:41:07.314848Z'
יצרתם בהצלחה אוטובוס ורישום מתקדמים של Eventarc, הפעלתם את הפרסום של אירועים ממקורות של Google, יצרתם תהליך עבודה ליצירת סוג אירוע נתמך מספק של Google, ואז אימתתם את התוצאה הצפויה ביומנים של שירות מקבל האירועים.
הסרת המשאבים
כשמסיימים את המשימות שמתוארות במדריך למתחילים הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים:
מחיקת משאבים מתקדמים של Eventarc:
אפשר גם למחוק את הפרויקט Google Cloud כדי להימנע מחיובים. אם מוחקים את הפרויקט ב- Google Cloud , החיוב על כל המשאבים שנעשה בהם שימוש באותו פרויקט יופסק.
כדי למחוק פרויקט Google Cloud :
gcloud projects delete PROJECT_ID