אתם יכולים להשתמש ב-Workflows כדי להריץ משימת Cloud Run כחלק מתהליך עבודה שמבצע עיבוד נתונים מורכב יותר או שמנהל מערכת של משימות קיימות.
במדריך הזה מוסבר איך להשתמש ב-Workflows כדי להריץ משימת Cloud Run לעיבוד נתוני אירועים שמאוחסנים בקטגוריה של Cloud Storage. אחסון מטען הייעודי של האירוע בדלי ב-Cloud Storage מאפשר להצפין את הנתונים באמצעות מפתחות הצפנה בניהול הלקוח. אי אפשר לעשות זאת אם מעבירים את נתוני האירוע כמשתני סביבה למשימת Cloud Run.
התרשים הבא מספק סקירה כללית:
מטרות
במדריך הזה תלמדו:
- יצירת משימת Cloud Run לעיבוד נתוני אירועים שמאוחסנים בקטגוריה של Cloud Storage.
- פורסים תהליך עבודה שמבצע את הפעולות הבאות:
- מקבל אירוע כארגומנט.
- הפונקציה כותבת את נתוני מטען הייעודי (payload) של האירוע לקטגוריה של Cloud Storage.
- משתמש במחבר Cloud Run Admin API כדי להריץ את העבודה ב-Cloud Run.
- יוצרים נושא Pub/Sub כדי שתוכלו לפרסם בו הודעה. במדריך הזה נשתמש באירוע Pub/Sub כדוגמה לאופן ניתוב האירועים באמצעות Workflows, ונשמור את האירוע ב-Cloud Storage כדי שעבודת Cloud Run תוכל לעבד את נתוני האירוע.
- יוצרים טריגר Eventarc שמריץ את תהליך העבודה כשנכתבת הודעה לנושא Pub/Sub.
- מפעילים את תהליך העבודה על ידי כתיבת הודעה לנושא Pub/Sub.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
לפני שמתחילים
יכול להיות שהגבלות אבטחה שהוגדרו בארגון שלכם ימנעו מכם להשלים את השלבים הבאים. מידע לפתרון בעיות זמין במאמר פיתוח אפליקציות בסביבה מוגבלת. Google Cloud
לפני שמתחילים את המדריך הזה, צריך להפעיל ממשקי API ספציפיים וליצור חשבון שירות שמנוהל על ידי המשתמש. צריך להקצות לחשבון השירות את התפקידים וההרשאות הנדרשים כדי שתוכלו לנתב אירועים באמצעות טריגר של Eventarc ולהפעיל תהליך עבודה.
שימו לב: אם אתם משתמשים ב-Cloud Shell כדי לנסות את המדריך הזה, יכול להיות שתצטרכו להעניק תפקידים נוספים לחשבון השירות שמשמש כברירת מחדל של Compute Engine. פרטים נוספים זמינים בקטע יצירת משימת Cloud Run במאמר הזה.
המסוף
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Compute Engine, Eventarc, and Workflows APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart. - Click Create and continue.
-
Grant the following roles to the service account: Cloud Run Admin, Eventarc Event Receiver, Logs Writer, Storage Object Creator, Workflows Invoker.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click Add another role and add each additional role.
- Click Continue.
-
Click Done to finish creating the service account.
-
Ensure that you have the Create Service Accounts IAM role
(
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Compute Engine, Eventarc, and Workflows APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart. - Click Create and continue.
-
Grant the following roles to the service account: Cloud Run Admin, Eventarc Event Receiver, Logs Writer, Storage Object Creator, Workflows Invoker.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click Add another role and add each additional role.
- Click Continue.
-
Click Done to finish creating the service account.
-
Ensure that you have the Create Service Accounts IAM role
(
- אם הפעלתם את סוכן השירות של Cloud Pub/Sub ב-8 באפריל 2021 או לפני כן, כדי לתמוך בבקשות push מאומתות של Pub/Sub, צריך להקצות לסוכן השירות את התפקיד 'יצירת אסימונים בחשבון שירות' (
roles/iam.serviceAccountTokenCreator). אחרת, התפקיד הזה מוענק כברירת מחדל:- נכנסים לדף IAM במסוף Google Cloud .
- מסמנים את התיבה Include Google-provided role grants.
- בעמודה Name, מחפשים את Cloud Pub/Sub Service Account ולוחצים על Edit principal בשורה המתאימה.
- לוחצים על הוספת תפקיד או על הוספת תפקיד נוסף.
- ברשימה Select a role, מסננים לפי Service Account Token Creator ובוחרים את התפקיד.
- לוחצים על Save.
- נכנסים לדף IAM במסוף Google Cloud .
-
במסוף Google Cloud , מפעילים את Cloud Shell.
בחלק התחתון של Google Cloud המסוף יתחיל סשן של Cloud Shell ותופיע הודעה של שורת הפקודה. Cloud Shell היא סביבת מעטפת שבה ה-CLI של Google Cloud מותקן ומוגדרים ערכים לפרויקט הקיים. הסשן יופעל תוך כמה שניות.
אפשר להשתמש ב-Cloud Shell כדי לבצע את השלבים בשורת הפקודה שמפורטים במדריך הזה.
gcloud
- נכנסים לחשבון 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, Cloud Storage, Compute Engine, Eventarc ו-Workflows:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com compute.googleapis.com run.googleapis.com storage.googleapis.com eventarc.googleapis.com workflows.googleapis.com -
מגדירים את האימות:
-
מוודאים שיש לכם את תפקיד ה-IAM Create Service Accounts (
roles/iam.serviceAccountCreator) ואת תפקיד ה-IAM Project Admin (roles/resourcemanager.projectIamAdmin). איך מקצים תפקידים -
יוצרים את חשבון השירות:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
מחליפים את הערך
SERVICE_ACCOUNT_NAMEבשם שרוצים לתת לחשבון השירות. -
נותנים לחשבון השירות תפקידים. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM:
roles/eventarc.eventReceiver, roles/logging.logWriter, roles/run.admin, roles/storage.objectCreator, roles/workflows.invoker:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
מחליפים את מה שכתוב בשדות הבאים:
SERVICE_ACCOUNT_NAME: השם של חשבון השירותPROJECT_ID: מזהה הפרויקט שבו יצרתם את חשבון השירותROLE: התפקיד שאתם רוצים לתת
-
מוודאים שיש לכם את תפקיד ה-IAM Create Service Accounts (
-
התקינו את ה-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, Cloud Storage, Compute Engine, Eventarc ו-Workflows:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com compute.googleapis.com run.googleapis.com storage.googleapis.com eventarc.googleapis.com workflows.googleapis.com -
מגדירים את האימות:
-
מוודאים שיש לכם את תפקיד ה-IAM Create Service Accounts (
roles/iam.serviceAccountCreator) ואת תפקיד ה-IAM Project Admin (roles/resourcemanager.projectIamAdmin). איך מקצים תפקידים -
יוצרים את חשבון השירות:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
מחליפים את הערך
SERVICE_ACCOUNT_NAMEבשם שרוצים לתת לחשבון השירות. -
נותנים לחשבון השירות תפקידים. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM:
roles/eventarc.eventReceiver, roles/logging.logWriter, roles/run.admin, roles/storage.objectCreator, roles/workflows.invoker:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
מחליפים את מה שכתוב בשדות הבאים:
SERVICE_ACCOUNT_NAME: השם של חשבון השירותPROJECT_ID: מזהה הפרויקט שבו יצרתם את חשבון השירותROLE: התפקיד שאתם רוצים לתת
-
מוודאים שיש לכם את תפקיד ה-IAM Create Service Accounts (
- אם הפעלתם את סוכן השירות של Cloud Pub/Sub ב-8 באפריל 2021 או לפני כן, כדי לתמוך בבקשות push מאומתות של Pub/Sub, צריך להקצות לסוכן השירות את התפקיד 'יצירת אסימונים בחשבון שירות' (
roles/iam.serviceAccountTokenCreator). אחרת, התפקיד הזה מוענק כברירת מחדל:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
מחליפים את PROJECT_NUMBER במספר הפרויקט ב- Google Cloud. אפשר לראות את מספר הפרויקט בדף Welcome במסוף Google Cloud או על ידי הרצת הפקודה הבאה:
gcloud projects describe PROJECT_ID --format='value(projectNumber)'
יצירת משימת Cloud Run
במדריך הזה נעשה שימוש בקוד לדוגמה שזמין ב-GitHub. סקריפט הפריסה יוצר קובץ אימג' של קונטיינר כדי ליצור משימת Cloud Run בשם message-payload-job.
הסקריפט גם יוצר קטגוריה של Cloud Storage ומפיק מזהה ייחודי אוניברסלי (UUID) לשם שלה באמצעות uuidgen, כלי שבדרך כלל כבר מותקן ב-Linux, ב-macOS וב-Windows.
הג'וב של Cloud Run קורא את נתוני האירועים שמאוחסנים בקטגוריה של Cloud Storage ואז מדפיס את נתוני האירועים.
אם מריצים את סקריפט הפריסה ב-Cloud Shell, ולחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine אין תפקיד עריכה, צריך להעניק את התפקידים הבאים בפרויקט לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine. (אחרת, אפשר לדלג על השלב הזה ולהמשיך לשלב הבא, שבו משכפלים את מאגר האפליקציה לדוגמה).
הקצאת התפקיד 'כותב של Artifact Registry' (
roles/artifactregistry.writer):gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/artifactregistry.writer
מחליפים את
PROJECT_NUMBERבמספר הפרויקט ב- Google Cloud. אפשר לראות את מספר הפרויקט בדף Welcome במסוף Google Cloud או על ידי הרצת הפקודה הבאה:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
נותנים את התפקיד Storage Object User (
roles/storage.objectUser):gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/storage.objectUser
הקצאת התפקיד Logging Logs Writer (
roles/logging.logWriter):gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/logging.logWriter
כדי לקבל את הקוד לדוגמה, משכפלים את מאגר האפליקציה לדוגמה למכונה המקומית:
git clone https://github.com/GoogleCloudPlatform/workflows-demos.git
אפשר גם להוריד את הדוגמה כקובץ ZIP.
עוברים לספרייה שמכילה את הקוד לדוגמה:
cd workflows-demos/cloud-run-jobs-payload-gcs/message-payload-job
מריצים את סקריפט הפריסה כדי ליצור את משימת Cloud Run:
./deploy-job.sh
הפלט אמור להיראות כך:
STATUS: SUCCESS Creating input bucket message-payload-UNIQUE_ID ... Creating Cloud Run job [message-payload-job] in project [PROJECT_ID] region [us-central1] Creating job... Done. Job [message-payload-job] has successfully been created.שימו לב ל-UUID שנוצר לשם הקטגוריה של Cloud Storage. תצטרכו את המזהה הזה כשפריסת תהליך העבודה.
פריסת תהליך עבודה שמריץ את משימת Cloud Run
מגדירים ופורסים תהליך עבודה שמריץ את המשימה ב-Cloud Run שיצרתם. הגדרת תהליך עבודה מורכבת מסדרה של שלבים שמתוארים באמצעות התחביר של Workflows.
תהליך העבודה מקבל אירוע, שומר את נתוני האירוע בקטגוריה של Cloud Storage, ואז מריץ משימה של Cloud Run כדי לעבד את נתוני האירוע.
המסוף
במסוף Google Cloud , נכנסים לדף Workflows:
לוחצים על יצירה.
מזינים שם לתהליך העבודה החדש, למשל
message-payload-workflow.בוחרים אזור מתאים, לדוגמה,
us-central1.בשדה Service account, בוחרים את חשבון השירות שיצרתם קודם.
חשבון השירות משמש כזהות של תהליך העבודה. כבר הקציתם לחשבון השירות את התפקידים הבאים:
- אדמין ב-Cloud Run: להפעלת משימות ב-Cloud Run
- בעל הרשאת כתיבה של יומנים: כדי לכתוב רשומות ביומן
- יצירת אובייקטים באחסון: כדי ליצור אובייקטים ב-Cloud Storage
לוחצים על הבא.
בעורך תהליכי העבודה, מזינים את ההגדרה הבאה לתהליך העבודה:
מחליפים את
UNIQUE_IDב-UUID שנוצר לשם של קטגוריה של Cloud Storage ורשמתם קודם.לוחצים על פריסה.
gcloud
יוצרים קובץ קוד מקור לתהליך העבודה:
touch message-payload-workflow.yamlמעתיקים את הגדרת תהליך העבודה הבאה אל
message-payload-workflow.yaml:מחליפים את
UNIQUE_IDב-UUID שנוצר לשם של קטגוריה של Cloud Storage ורשמתם קודם.מריצים את הפקודה הבאה כדי לפרוס את תהליך העבודה:
gcloud workflows deploy message-payload-workflow \ --location=us-central1 \ --source=message-payload-workflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_ACCOUNT_NAME: השם של חשבון השירות שיצרתם קודם -
PROJECT_ID: מזהה הפרויקט ב-Google Cloud
חשבון השירות משמש כזהות של תהליך העבודה. כבר הקציתם לחשבון השירות את התפקידים הבאים:
-
roles/logging.logWriter: כדי לכתוב רשומות ביומן -
roles/run.admin: להפעלת משימות ב-Cloud Run -
roles/storage.objectCreator: כדי ליצור אובייקטים ב-Cloud Storage
-
תהליך העבודה מבצע את הפעולות הבאות:
initstep – מקבל אירוע כארגומנט ומגדיר את המשתנים הנדרשים.שלב
log_event– יוצר רשומה ביומן ב-Cloud Logging באמצעות הפונקציה sys.log.שלב
write_payload_to_gcs– שולח בקשת HTTPPOSTוכותב את נתוני מטען הייעודי של האירוע לקובץ בקטגוריה של Cloud Storage.
run_job_to_process_payloadstep – משתמש בשיטה של Cloud Run Admin API connector,googleapis.run.v1.namespaces.jobs.run, כדי להפעיל את העבודה. הקטגוריה של Cloud Storage ושם קובץ הנתונים מועברים כמשתני החלפה מתהליך העבודה למשימה.שלב
finish– מחזיר מידע על ביצוע המשימה כתוצאה של תהליך העבודה.
יוצרים נושא Pub/Sub
יוצרים נושא Pub/Sub כדי שתוכלו לפרסם בו הודעה. אירוע Pub/Sub משמש להדגמה של ניתוב אירוע באמצעות Workflows ושמירת האירוע ב-Cloud Storage, כדי שעבודת Cloud Run תוכל לעבד את נתוני האירוע.
המסוף
נכנסים לדף Topics במסוף Google Cloud .
לוחצים על Create topic.
בשדה Topic ID (מזהה הנושא), מזינים מזהה לנושא, כמו
message-payload-topic.משאירים את האפשרות הוספת מינוי שמוגדר כברירת מחדל.
לא בוחרים באפשרויות האחרות.
לוחצים על יצירה.
gcloud
כדי ליצור נושא עם המזהה message-payload-topic, מריצים את הפקודה gcloud pubsub topics create:
gcloud pubsub topics create message-payload-topic
יצירת טריגר Eventarc לניתוב אירועים לתהליך העבודה
כדי להפעיל אוטומטית את תהליך העבודה, ובתורו את משימת Cloud Run, צריך ליצור טריגר Eventarc שמגיב לאירועי Pub/Sub ומנתב את האירועים לתהליך העבודה. בכל פעם שנכתבת הודעה בנושא Pub/Sub, האירוע מפעיל את זרימת העבודה.
המסוף
במסוף Google Cloud , נכנסים לדף Workflows:
לוחצים על השם של תהליך העבודה, למשל
message-payload-workflow.בדף פרטי תהליך העבודה, לוחצים על עריכה.
בדף Edit workflow (עריכת תהליך העבודה), בקטע Triggers (טריגרים), לוחצים על Add new trigger > Eventarc (הוספת טריגר חדש > Eventarc).
החלונית Eventarc trigger תיפתח.
בשדה Trigger name, מזינים שם לטריגר, כמו
message-payload-trigger.ברשימה Event provider, בוחרים באפשרות Cloud Pub/Sub.
ברשימה Event (אירוע), בוחרים באפשרות google.cloud.pubsub.topic.v1.messagePublished.
ברשימה Select a Cloud Pub/Sub topic, בוחרים את נושא ה-Pub/Sub שיצרתם קודם.
בשדה Service account, בוחרים את חשבון השירות שיצרתם קודם.
חשבון השירות משמש כזהות של הטריגר. כבר הקציתם לחשבון השירות את התפקידים הבאים:
- Eventarc Event Receiver: לקבלת אירועים
- Workflows Invoker: להפעלת תהליכי עבודה
לוחצים על Save trigger.
הטריגר של Eventarc מופיע עכשיו בקטע Triggers (טריגרים) בדף Edit workflow (עריכת תהליך העבודה).
לוחצים על הבא.
לוחצים על פריסה.
gcloud
כדי ליצור טריגר Eventarc, מריצים את הפקודה הבאה:
gcloud eventarc triggers create message-payload-trigger \ --location=us-central1 \ --destination-workflow=message-payload-workflow \ --destination-workflow-location=us-central1 \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/message-payload-topic \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
SERVICE_ACCOUNT_NAME: השם של חשבון השירות שיצרתם קודם.
חשבון השירות משמש כזהות של הטריגר. כבר הקציתם לחשבון השירות את התפקידים הבאים:
-
roles/eventarc.eventReceiver: לקבלת אירועים -
roles/workflows.invoker: להפעלת תהליכי עבודה
הפעלת תהליך העבודה
בודקים את המערכת מקצה לקצה על ידי פרסום הודעה בנושא ב-Pub/Sub ויצירת אירוע. מידע נוסף זמין במאמר בנושא הפעלת תהליך עבודה באמצעות אירועים או הודעות Pub/Sub.
מפרסמים הודעה בנושא Pub/Sub כדי ליצור אירוע:
gcloud pubsub topics publish message-payload-topic --message="Hello World"
האירוע מנותב אל תהליך העבודה שמתעד את הודעת האירוע, שומר את נתוני האירוע בקטגוריה של Cloud Storage ומבצע את המשימה של Cloud Run כדי לעבד את הנתונים שנשמרו ב-Cloud Storage. הפעולה עשויה להימשך מספר דקות.
כדי לוודא שהמשימה ב-Cloud Run פעלה כמו שצריך, צופים בהרצות של המשימה:
gcloud run jobs executions list --job=message-payload-job
פלט חדש של ביצוע העבודה אמור להופיע.
כדי לוודא שהתוצאות הן כמו שציפיתם, אפשר לעיין בנתוני האירועים באובייקט של קטגוריית Cloud Storage.
מאחזרים את שם הקטגוריה:
gcloud storage ls
הפלט אמור להיראות כך:
gs://message-payload-UNIQUE_ID/
הצגת רשימת האובייקטים בקטגוריה:
gcloud storage ls gs://message-payload-UNIQUE_ID/** --recursive
הפלט אמור להיראות כך:
gs://message-payload-UNIQUE_ID/OBJECT_ID.data.json
חשוב לשים לב ל
OBJECT_IDכדי להשתמש בו בשלב הבא.מורידים את האובייקט בקטגוריה כקובץ:
gcloud storage cp gs://message-payload-UNIQUE_ID/OBJECT_ID.data.json message-event.txt
מחליפים את
OBJECT_IDבמזהה שהוחזר בשלב הקודם.פותחים את הקובץ
message-event.txtבכלי לעריכת טקסט. גוף האירוע שנכתב בקובץ צריך להיות דומה לזה:{ "message": { "data": "SGVsbG8gV29ybGQ=", "messageId": "8254002311197919", "publishTime": "2023-09-20T16:54:29.312Z" }, "subscription": "projects/MY_PROJECT/subscriptions/eventarc-us-central1-message-payload-trigger-sub-741" }שימו לב שאם מפענחים את ערך הנתונים
SGVsbG8gV29ybGQ=מהפורמט Base64 שלו, מוחזר הערך Hello World.
הסרת המשאבים
אם יצרתם פרויקט חדש בשביל המדריך הזה, תמחקו את הפרויקט. אם השתמשתם בפרויקט קיים ואתם רוצים לשמור אותו בלי השינויים שנוספו במדריך הזה, תצטרכו למחוק את המשאבים שנוצרו לצורך המדריך.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת משאבי הדרכה
מוחקים את המשאבים שיצרתם במדריך הזה: