בעזרת Workflows תוכלו להריץ משימות של Cloud Run כחלק מתהליך עבודה כדי לבצע עיבוד נתונים מורכב יותר או לתזמן מערכת של משימות קיימות.
במדריך הזה נדגים איך להשתמש ב-Workflows כדי להפעיל משימת Cloud Run שמבצעת עיבוד של נתונים שמועברים למשימה כמשתני סביבה, בתגובה לאירוע מ-Cloud Storage.
שימו לב שאפשר גם לאחסן את נתוני האירועים בקטגוריה של Cloud Storage, וכך להצפין את הנתונים באמצעות מפתחות הצפנה בניהול הלקוח. מידע נוסף זמין במאמר הפעלת משימה ב-Cloud Run לעיבוד נתוני אירועים שנשמרו ב-Cloud Storage.
מטרות
במדריך הזה תלמדו:
- יצירת משימת Cloud Run לעיבוד קובצי נתונים בקטגוריה של Cloud Storage.
- פורסים תהליך עבודה שמבצע את הפעולות הבאות:
- מקבל אירוע של Cloud Storage כארגומנט.
- הפונקציה בודקת אם הקטגוריה של Cloud Storage שצוינה באירוע היא אותה קטגוריה שבה נעשה שימוש במשימה של Cloud Run.
- אם כן, המערכת משתמשת במחבר Cloud Run Admin API כדי להריץ את משימת Cloud Run.
- יוצרים טריגר Eventarc שמפעיל את תהליך העבודה בתגובה לאירועים שמשפיעים על הקטגוריה של Cloud Storage.
- מפעילים את תהליך העבודה על ידי עדכון קובץ נתוני קלט בקטגוריה של Cloud Storage.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
לפני שמתחילים
יכול להיות שהגבלות אבטחה שהוגדרו בארגון שלכם ימנעו מכם להשלים את השלבים הבאים. מידע לפתרון בעיות זמין במאמר פיתוח אפליקציות בסביבה מוגבלת. Google Cloud
המסוף
- נכנסים לחשבון 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, 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, 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, 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, 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 Storage, צריך להעניק לסוכן השירות של Cloud Storage את התפקיד Pub/Sub Publisher (
roles/pubsub.publisher):- נכנסים לדף IAM במסוף Google Cloud .
- מסמנים את התיבה Include Google-provided role grants.
- בעמודה Principal, מחפשים את Cloud Storage Service Agent עם הטופס
service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com, ולוחצים על Edit principal בשורה המתאימה. - לוחצים על הוספת תפקיד או על הוספת תפקיד נוסף.
- ברשימה Select a role, מסננים לפי Pub/Sub Publisher ואז בוחרים את התפקיד.
- לוחצים על Save.
- נכנסים לדף IAM במסוף Google Cloud .
- אם הפעלתם את סוכן השירות של 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 תומך בפקודות
/dev/urandom שמופיעות במדריך הזה, שיוצרות מספרים פסאודו-אקראיים.
gcloud
כדי להשתמש בטרמינל אונליין שכבר מוגדר בו ה-CLI של gcloud, צריך להפעיל את Cloud Shell:
בחלק התחתון של הדף הזה מתחיל סשן של Cloud Shell ומופיעה הנחיה של שורת הפקודה. הסשן יופעל תוך כמה שניות.
Cloud Shell תומך בפקודות
/dev/urandomשמופיעות במדריך הזה ויוצרות מספרים פסאודו-אקראיים.- יוצרים או בוחרים Google Cloud פרויקט.
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
-
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
-
- מוודאים שהחיוב מופעל בפרויקט Google Cloud .
- מפעילים את ממשקי ה-API של Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Eventarc ו-Workflows:
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ eventarc.googleapis.com \ run.googleapis.com \ storage.googleapis.com \ workflows.googleapis.com
- יוצרים חשבון שירות כדי שהתהליך העסקי יוכל להשתמש בו לאימות מול שירותים אחרים, ומקצים לו את התפקידים המתאימים. Google Cloud
- יוצרים את חשבון השירות:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
מחליפים את הערך
SERVICE_ACCOUNT_NAMEבשם שרוצים לתת לחשבון השירות. - נותנים תפקידים לחשבון השירות בניהול המשתמשים שיצרתם בשלב הקודם. מריצים את הפקודה הבאה לכל אחד מהתפקידים הבאים ב-IAM, או משתמשים בדגל
--roleכמה פעמים בפקודה אחת:-
roles/eventarc.eventReceiver: לקבלת אירועים -
roles/logging.logWriter: לכתוב יומנים -
roles/run.admin: להפעלת משימת Cloud Run -
roles/workflows.invoker: להפעלת תהליכי עבודה
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=ROLE
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו יצרתם את חשבון השירות-
ROLE: התפקיד שרוצים להקצות לחשבון השירות שמנוהל על ידי המשתמש
-
- יוצרים את חשבון השירות:
- לפני שיוצרים טריגר לאירועים ישירים מ-Cloud Storage, צריך להעניק לסוכן השירות של Cloud Storage את התפקיד Pub/Sub Publisher (
roles/pubsub.publisher):SERVICE_ACCOUNT="$(gcloud storage service-agent --project=PROJECT_ID)" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role='roles/pubsub.publisher'
- אם הפעלתם את סוכן השירות של 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)'
Terraform
כדי להשתמש בטרמינל אונליין שכבר מוגדר בו ה-CLI של gcloud, צריך להפעיל את Cloud Shell:
בחלק התחתון של הדף הזה מתחיל סשן של Cloud Shell ומופיעה הנחיה של שורת הפקודה. הסשן יופעל תוך כמה שניות.
Cloud Shell תומך בפקודות
/dev/urandomשמופיעות במדריך הזה, שיוצרות מספרים פסאודו-אקראיים.- יוצרים או בוחרים Google Cloud פרויקט.
-
יוצרים Google Cloud פרויקט:
gcloud projects create PROJECT_ID
-
בוחרים את הפרויקט שיצרתם: Google Cloud
gcloud config set project PROJECT_ID
-
- מוודאים שהחיוב מופעל בפרויקט Google Cloud .
- מפעילים את ממשקי ה-API של Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Eventarc ו-Workflows:
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ eventarc.googleapis.com \ run.googleapis.com \ storage.googleapis.com \ workflows.googleapis.com
יוצרים חשבון שירות כדי שהתהליך העסקי יוכל להשתמש בו לאימות מול שירותים אחרים, ומקצים לו את התפקידים המתאימים. Google Cloud בנוסף, כדי לתמוך באירועים ישירים מ-Cloud Storage, צריך להעניק לסוכן השירות של Cloud Storage את התפקיד Pub/Sub Publisher (
roles/pubsub.publisher).משנים את הקובץ
main.tfכמו בדוגמה הבאה. מידע נוסף זמין במאמרי העזרה בנושא ספק Google ל-Terraform.כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
הערה: בתהליך עבודה טיפוסי של Terraform, מיישמים את כל התוכנית בבת אחת. עם זאת, לצורך המדריך הזה, אפשר לטרגט משאב ספציפי. לדוגמה:
terraform apply -target="google_service_account.workflows"- אם הפעלתם את סוכן השירות של 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
במדריך הזה נעשה שימוש בעבודת Cloud Run לדוגמה מ-GitHub. העבודה קוראת נתונים מקובץ קלט ב-Cloud Storage, ומבצעת עיבוד שרירותי לכל שורה בקובץ.
כדי לקבל את הקוד לדוגמה, משכפלים את מאגר האפליקציה לדוגמה למכונה המקומית:
git clone https://github.com/GoogleCloudPlatform/jobs-demos.git
אפשרות נוספת היא להוריד את הדוגמה כקובץ ZIP ולחלץ אותה.
עוברים לספרייה שמכילה את הקוד לדוגמה:
cd jobs-demos/parallel-processing
יוצרים קטגוריה של Cloud Storage לאחסון קובץ קלט שאפשר לכתוב בו ולהפעיל אירוע:
המסוף
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
- לוחצים על הוספה יצירה.
- בדף Create a bucket, מזינים שם לקטגוריה:
מחליפים אתinput-PROJECT_ID
PROJECT_IDבמזהה של פרויקט Google Cloud . - משאירים את ערכי ברירת המחדל בשאר ההגדרות.
- לוחצים על יצירה.
gcloud
מריצים את הפקודה
gcloud storage buckets create:gcloud storage buckets create gs://input-PROJECT_ID
אם הבקשה מבוצעת בהצלחה, הפקודה תחזיר את ההודעה הבאה:
Creating gs://input-PROJECT_ID/...
Terraform
כדי ליצור קטגוריה של Cloud Storage, משתמשים במשאב
google_storage_bucketומשנים את הקובץmain.tfכמו בדוגמה הבאה.כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
הערה: בתהליך עבודה טיפוסי של Terraform, מיישמים את התוכנית כולה בבת אחת. אבל לצורך המדריך הזה, אפשר לטרגט משאב ספציפי. לדוגמה:
terraform apply -target="random_id.bucket_name_suffix"
וגם
terraform apply -target="google_storage_bucket.default"- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
יוצרים מאגר רגיל ב-Artifact Registry שבו אפשר לאחסן את קובץ האימג' של הקונטיינר:
המסוף
נכנסים לדף Repositories ב-Artifact Registry במסוף Google Cloud :
לוחצים על Create repository.
מזינים שם למאגר, למשל
my-repo. שמות המאגרים צריכים להיות ייחודיים לכל מיקום מאגר בפרויקט.שומרים על פורמט ברירת המחדל, שהוא Docker.
משאירים את מצב ברירת המחדל, שהוא רגיל.
באזור, בוחרים באפשרות us-central1 (Iowa).
משאירים את כל שאר ברירות המחדל.
לוחצים על יצירה.
gcloud
מריצים את הפקודה:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=us-central1
מחליפים את
REPOSITORYבשם ייחודי למאגר, לדוגמה,my-repo. לכל מיקום מאגר בפרויקט, שמות המאגרים צריכים להיות ייחודיים.Terraform
כדי ליצור מאגר ב-Artifact Registry, משתמשים במשאב
google_artifact_registry_repositoryומשנים את קובץmain.tfכמו בדוגמה הבאה.הערה: בתהליך עבודה טיפוסי של Terraform, מיישמים את כל התוכנית בבת אחת. עם זאת, לצורך המדריך הזה, אפשר לטרגט משאב ספציפי. לדוגמה:
terraform apply -target="google_artifact_registry_repository.default"מריצים build של קובץ האימג' של הקונטיינר באמצעות Google Cloud buildpack שמוגדר כברירת מחדל:
export SERVICE_NAME=parallel-job gcloud builds submit \ --pack image=us-central1-docker.pkg.dev/PROJECT_ID/REPOSITORY/${SERVICE_NAME}
מחליפים את
REPOSITORYבשם המאגר שלכם ב-Artifact Registry.התהליך עשוי להימשך כמה דקות.
יוצרים משימת Cloud Run שפורסת את קובץ האימג' של הקונטיינר:
המסוף
נכנסים לדף Cloud Run במסוף Google Cloud :
לוחצים על Create job (יצירת משימה) כדי להציג את הטופס Create job (יצירת משימה).
- בטופס, בוחרים באפשרות
us-central1-docker.pkg.dev/PROJECT_ID/REPOSITORY/parallel-job:latestבתור כתובת ה-URL של קובץ אימג' של קונטיינר של Artifact Registry. - אופציונלי: בשדה 'שם המשימה', מזינים
parallel-job. - אופציונלי: בוחרים באזור us-central1 (Iowa).
- כדי להזין את מספר המשימות שרוצים להריץ בעבודה, מזינים
10. כדי שהעבודה תצליח, כל המשימות צריכות להצליח. כברירת מחדל, המשימות מבוצעות במקביל.
- בטופס, בוחרים באפשרות
מרחיבים את הקטע Container, Variables & Secrets, Connections, Security (מאגר, משתנים וסודות, חיבורים, אבטחה) ומשאירים את כל הגדרות ברירת המחדל, למעט ההגדרות הבאות:
לוחצים על הכרטיסייה General.
- בפקודת מאגר התגים, מזינים
python. - בארגומנט של הקונטיינר, מזינים
process.py.
- בפקודת מאגר התגים, מזינים
לוחצים על הכרטיסייה Variables & Secrets (משתנים וסודות).
- לוחצים על הוספת משתנה ומזינים
INPUT_BUCKETבשדה השם ו-input-PROJECT_IDבשדה הערך. - לוחצים על הוספת משתנה ומזינים
INPUT_FILEבשדה השם ו-input_file.txtבשדה הערך.
- לוחצים על הוספת משתנה ומזינים
כדי ליצור את העבודה, לוחצים על Create.
gcloud
מגדירים את אזור ברירת המחדל של Cloud Run:
gcloud config set run/region us-central1
יוצרים את משימת Cloud Run:
gcloud run jobs create parallel-job \ --image us-central1-docker.pkg.dev/PROJECT_ID/REPOSITORY/parallel-job:latest \ --command python \ --args process.py \ --tasks 10 \ --set-env-vars=INPUT_BUCKET=input-PROJECT_ID,INPUT_FILE=input_file.txt
שימו לב: אם לא מציינים תג תמונה, Artifact Registry מחפש את התמונה עם התג
latestשמוגדר כברירת מחדל.רשימה מלאה של האפשרויות הזמינות ליצירת משימה מופיעה בתיעוד של שורת הפקודה gcloud run jobs create.
אחרי יצירת העבודה, אמורה להופיע הודעה שמציינת שהפעולה בוצעה בהצלחה.
Terraform
כדי ליצור משימת Cloud Run, משתמשים במשאב
google_cloud_run_v2_jobומשנים את קובץmain.tfכמו בדוגמה הבאה.הערה: בתהליך עבודה טיפוסי של Terraform, מיישמים את כל התוכנית בבת אחת. עם זאת, לצורך המדריך הזה, אפשר לטרגט משאב ספציפי. לדוגמה:
terraform apply -target="google_cloud_run_v2_job.default"
פריסת תהליך עבודה שמריץ את משימת Cloud Run
מגדירים ופורסים תהליך עבודה שמריץ את המשימה ב-Cloud Run שיצרתם. הגדרת תהליך עבודה מורכבת מסדרה של שלבים שמתוארים באמצעות התחביר של Workflows.
המסוף
במסוף Google Cloud , נכנסים לדף Workflows:
לוחצים על יצירה.
מזינים שם לתהליך העבודה החדש, למשל
cloud-run-job-workflow.באזור, בוחרים באפשרות us-central1 (Iowa).
בשדה Service account, בוחרים את חשבון השירות שיצרתם קודם.
חשבון השירות משמש כזהות של תהליך העבודה. צריך לוודא שכבר הקציתם לחשבון השירות את התפקיד אדמין Cloud Run כדי שתהליך העבודה יוכל להריץ את המשימה של Cloud Run.
לוחצים על הבא.
בעורך תהליכי העבודה, מזינים את ההגדרה הבאה לתהליך העבודה:
לוחצים על פריסה.
gcloud
יוצרים קובץ קוד מקור לתהליך העבודה:
touch cloud-run-job-workflow.yamlמעתיקים את הגדרת תהליך העבודה הבאה לקובץ קוד המקור:
מריצים את הפקודה הבאה כדי לפרוס את תהליך העבודה:
gcloud workflows deploy cloud-run-job-workflow \ --location=us-central1 \ --source=cloud-run-job-workflow.yaml \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_ACCOUNT_NAME: השם של חשבון השירות שיצרתם קודם -
PROJECT_ID: מזהה הפרויקט ב-Google Cloud
חשבון השירות משמש כזהות של תהליך העבודה. צריך לוודא שכבר הקציתם את התפקיד
roles/run.adminלחשבון השירות, כדי שתהליך העבודה יוכל להריץ את משימת Cloud Run.-
Terraform
כדי ליצור תהליך עבודה, משתמשים במשאב google_workflows_workflow ומשנים את קובץ main.tf כמו בדוגמה הבאה.
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
שימו לב: בתהליך עבודה טיפוסי של Terraform, מיישמים את כל התוכנית בבת אחת. אבל לצורך המדריך הזה, אפשר לטרגט משאב ספציפי. לדוגמה:
terraform apply -target="google_workflows_workflow.default"
תהליך העבודה מבצע את הפעולות הבאות:
שלב
init– מקבל אירוע של Cloud Storage כארגומנט ואז מגדיר את המשתנים הנדרשים.שלב
check_input_file– המערכת בודקת אם קטגוריית Cloud Storage שצוינה באירוע היא הקטגוריה שבה נעשה שימוש במשימת Cloud Run.- אם כן, תהליך העבודה ממשיך לשלב
run_job. - אם לא, תהליך העבודה מסתיים וכל עיבוד נוסף מופסק.
- אם כן, תהליך העבודה ממשיך לשלב
run_jobstep – משתמש ב-method googleapis.run.v1.namespaces.jobs.runשל מחבר Cloud Run Admin API כדי להריץ את הג'וב. שמות הקטגוריות של Cloud Storage וקובצי הנתונים מועברים כמשתני דריסה מתהליך העבודה למשימה.שלב
finish– מחזיר מידע על ביצוע המשימה כתוצאה של תהליך העבודה.
יצירת טריגר Eventarc לתהליך העבודה
כדי להפעיל אוטומטית את תהליך העבודה, וכתוצאה מכך את המשימה של Cloud Run, בכל פעם שקובץ נתוני הקלט מתעדכן, צריך ליצור טריגר של Eventarc שמגיב לאירועים של Cloud Storage בקטגוריה שמכילה את קובץ נתוני הקלט.
המסוף
במסוף Google Cloud , נכנסים לדף Workflows:
לוחצים על השם של תהליך העבודה, למשל
cloud-run-job-workflow.בדף פרטי תהליך העבודה, לוחצים על עריכה.
בדף Edit workflow (עריכת תהליך העבודה), בקטע Triggers (טריגרים), לוחצים על Add new trigger > Eventarc (הוספת טריגר חדש > Eventarc).
החלונית Eventarc trigger תיפתח.
בשדה Trigger name, מזינים שם לטריגר, כמו
cloud-run-job-workflow-trigger.ברשימה ספק האירועים, בוחרים באפשרות Cloud Storage.
ברשימה Event, בוחרים באפשרות google.cloud.storage.object.v1.finalized.
בשדה Bucket, בוחרים את ה-bucket שמכיל את קובץ נתוני הקלט. שם הקטגוריה הוא מהצורה
input-PROJECT_ID.בשדה Service account, בוחרים את חשבון השירות שיצרתם קודם.
חשבון השירות משמש כזהות של הטריגר. כבר הקציתם לחשבון השירות את התפקידים הבאים:
- Eventarc Event Receiver: לקבלת אירועים
- Workflows Invoker: להפעלת תהליכי עבודה
לוחצים על Save trigger.
הטריגר של Eventarc מופיע עכשיו בקטע Triggers (טריגרים) בדף Edit workflow (עריכת תהליך העבודה).
לוחצים על הבא.
לוחצים על פריסה.
gcloud
כדי ליצור טריגר Eventarc, מריצים את הפקודה הבאה:
gcloud eventarc triggers create cloud-run-job-workflow-trigger \ --location=us \ --destination-workflow=cloud-run-job-workflow \ --destination-workflow-location=us-central1 \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=input-PROJECT_ID" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
SERVICE_ACCOUNT_NAME: השם של חשבון השירות שיצרתם קודם.
חשבון השירות משמש כזהות של הטריגר. כבר הקציתם לחשבון השירות את התפקידים הבאים:
-
roles/eventarc.eventReceiver: לקבלת אירועים -
roles/workflows.invoker: להפעלת תהליכי עבודה
Terraform
כדי ליצור טריגר, משתמשים בgoogle_eventarc_trigger resource ומשנים את קובץ main.tf כמו בדוגמה הבאה.
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
שימו לב: בתהליך עבודה טיפוסי של Terraform, מיישמים את כל התוכנית בבת אחת. אבל לצורך המדריך הזה, אפשר לטרגט משאב ספציפי. לדוגמה:
terraform apply -target="google_eventarc_trigger.default"
בכל פעם שקובץ מועלה או נכתב מחדש בקטגוריה של Cloud Storage שמכילה את קובץ נתוני הקלט, תהליך העבודה מופעל עם אירוע Cloud Storage התואם כארגומנט.
הפעלת תהליך העבודה
כדי לבדוק את המערכת מקצה לקצה, מעדכנים את קובץ נתוני הקלט ב-Cloud Storage.
יוצרים נתונים חדשים לקובץ הקלט ומעלים אותו ל-Cloud Storage במיקום שהמשימה של Cloud Run מצפה לו:
base64 /dev/urandom | head -c 100000 >input_file.txt gcloud storage cp input_file.txt gs://input-PROJECT_ID/input_file.txt
אם יצרתם קטגוריה של Cloud Storage באמצעות Terraform, אתם יכולים לאחזר את שם הקטגוריה על ידי הרצת הפקודה הבאה:
gcloud storage buckets list gs://input*
יכול להיות שייקח כמה דקות להריץ את המשימה ב-Cloud Run.
כדי לוודא שהמשימה ב-Cloud Run פעלה כמו שצריך, צופים בהרצות של המשימה:
gcloud config set run/region us-central1 gcloud run jobs executions list --job=parallel-job
בפלט אמורה להופיע הודעה על ביצוע מוצלח של העבודה, שמציינת ש
10/10משימות הושלמו.
מידע נוסף על הפעלת תהליך עבודה באמצעות אירועים או הודעות Pub/Sub
הסרת המשאבים
אם יצרתם פרויקט חדש בשביל המדריך הזה, תמחקו את הפרויקט. אם השתמשתם בפרויקט קיים ואתם רוצים לשמור אותו בלי השינויים שנוספו במדריך הזה, תצטרכו למחוק את המשאבים שנוצרו לצורך המדריך.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת משאבי הדרכה
מוחקים את המשאבים שיצרתם במדריך הזה:
מחיקת הטריגר של Eventarc:
gcloud eventarc triggers delete cloud-run-job-workflow-trigger --location=us
מחיקת תהליך העבודה:
gcloud workflows delete cloud-run-job-workflow --location=us-central1
מוחקים את משימת Cloud Run:
gcloud run jobs delete parallel-job
מוחקים את קטגוריית Cloud Storage שנוצרה עבור נתוני הקלט:
gcloud storage rm --recursive gs://input-PROJECT_ID/
מחיקת מאגר Artifact Registry:
gcloud artifacts repositories delete REPOSITORY --location=us-central1