בעזרת 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, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). 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, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). 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 .
-
מפעילים את Cloud Shell במסוף Google Cloud .
בחלק התחתון של 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, צריך להקצות את התפקיד Pub/Sub Publisher (
roles/pubsub.publisher) לסוכן השירות של Cloud Storage: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 או לפני כן, כדי לתמוך בבקשות דחיפה מאומתות של 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 (
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.
משאירים את מצב ברירת המחדל, שאמור להיות Standard.
באזור, בוחרים באפשרות 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.
המסוף
נכנסים לדף Workflows במסוף Google Cloud :
לוחצים על Create.
מזינים שם לתהליך העבודה החדש, למשל
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_job– משתמש ב-method googleapis.run.v1.namespaces.jobs.runשל המחבר של Cloud Run Admin API כדי להריץ את המשימה. השמות של הקטגוריה ב-Cloud Storage ושל קובץ הנתונים מועברים כמשתנים חלופיים מתהליך העבודה למשימה.שלב
finish– מחזיר מידע על ביצוע המשימה כתוצאה מתהליך העבודה.
יצירת טריגר Eventarc לתהליך העבודה
כדי להפעיל אוטומטית את תהליך העבודה, וכתוצאה מכך את משימת Cloud Run, בכל פעם שקובץ נתוני הקלט מתעדכן, צריך ליצור טריגר Eventarc שמגיב לאירועי Cloud Storage בקטגוריה שמכילה את קובץ נתוני הקלט.
המסוף
נכנסים לדף Workflows במסוף Google Cloud :
לוחצים על השם של תהליך העבודה, למשל
cloud-run-job-workflow.בדף פרטי תהליך העבודה, לוחצים על עריכה.
בדף Edit workflow (עריכת תהליך העבודה), בקטע Triggers (טריגרים), לוחצים על Add new trigger > Eventarc (הוספת טריגר חדש > Eventarc).
החלונית Eventarc trigger נפתחת.
בשדה Trigger name, מזינים שם לטריגר, למשל
cloud-run-job-workflow-trigger.ברשימה ספק האירועים, בוחרים באפשרות Cloud Storage.
ברשימת האירועים, בוחרים באפשרות google.cloud.storage.object.v1.finalized.
בשדה Bucket, בוחרים את הקטגוריה שמכילה את קובץ נתוני הקלט. שם הקטגוריה הוא בפורמט
input-PROJECT_ID.בשדה Service account, בוחרים את חשבון השירות שיצרתם קודם.
חשבון השירות משמש כזהות של הטריגר. כבר הקציתם לחשבון השירות את התפקידים הבאים:
- מקבל אירועים ב-Eventarc: כדי לקבל אירועים
- מפעיל תהליכי עבודה: כדי להפעיל תהליכי עבודה
לוחצים על 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 ומשנים את הקובץ 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
הסרת המשאבים
אם יצרתם פרויקט חדש בשביל המדריך הזה, תמחקו את הפרויקט. אם השתמשתם בפרויקט קיים ואתם רוצים לשמור אותו בלי השינויים שנוספו במדריך הזה, מחקו את המשאבים שנוצרו בשביל המדריך.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.
כדי למחוק את הפרויקט:
- נכנסים לדף Manage resources במסוף Google Cloud .
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על 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