במדריך הזה מוסבר איך ליצור ולהפעיל תהליך עבודה ראשי שמבצע כמה תהליכי עבודה משניים במקביל.
בתרשים הבא, ארבעה תהליכי הפעלה מקבילים של תהליך העבודה של הצאצא מופעלים. כך תהליך העבודה הראשי יכול לעבד נתונים בענפים מקבילים, ולקצר את זמן הביצוע הכולל. תהליך העבודה הראשי ממתין לסיום של כל ההפעלות של תהליכי העבודה המשניים לפני שהוא מחזיר סיכום של הפעלות מוצלחות וכשלים, וכך הוא מפשט את זיהוי השגיאות.
מטרות
במדריך הזה תלמדו:
- יצירה ופריסה של תהליך עבודה משני שמקבל נתונים מתהליך עבודה ראשי.
- יצירה ופריסה של תהליך עבודה ראשי שמבצע כמה תהליכי עבודה משניים באמצעות לולאה מקבילית
for. - מריצים את תהליך העבודה הראשי שמפעיל הרצות מקבילות של תהליך העבודה המשני.
- התוצאות של כל ההרצות של תהליכי העבודה המשניים, גם אלה שהסתיימו בהצלחה וגם אלה שנכשלו, נשמרות ומוחזרות במפה.
אפשר להריץ את הפקודות הבאות במסוף Google Cloud או באמצעות Google Cloud CLI בטרמינל או ב-Cloud Shell.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.
לפני שמתחילים
יכול להיות שהגבלות אבטחה שהוגדרו בארגון שלכם ימנעו מכם להשלים את השלבים הבאים. מידע לפתרון בעיות זמין במאמר פיתוח אפליקציות בסביבה מוגבלת. Google Cloud
המסוף
-
נכנסים לחשבון Google.
אם עדיין אין חשבון, יוצרים חשבון חדש.
-
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 Workflow Executions 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 Workflows > Workflows Invoker role to the service account.
To grant the role, find the Select a role list, then select Workflows > Workflows Invoker.
- 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 Workflow Executions 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 Workflows > Workflows Invoker role to the service account.
To grant the role, find the Select a role list, then select Workflows > Workflows Invoker.
- Click Continue.
-
Click Done to finish creating the service account.
-
Ensure that you have the Create Service Accounts IAM role
(
gcloud
-
נכנסים לחשבון Google.
אם עדיין אין חשבון, יוצרים חשבון חדש.
-
התקינו את ה-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 של Workflow Executions ו-Workflows:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable workflowexecutions.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בשם שרוצים לתת לחשבון השירות. -
מקצים לחשבון השירות את התפקיד
roles/workflows.invokerב-IAM:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/workflows.invoker
מחליפים את מה שכתוב בשדות הבאים:
SERVICE_ACCOUNT_NAME: השם של חשבון השירותPROJECT_ID: מזהה הפרויקט שבו יצרתם את חשבון השירות
-
מוודאים שיש לכם את תפקיד ה-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 של Workflow Executions ו-Workflows:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידיםgcloud services enable workflowexecutions.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בשם שרוצים לתת לחשבון השירות. -
מקצים לחשבון השירות את התפקיד
roles/workflows.invokerב-IAM:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/workflows.invoker
מחליפים את מה שכתוב בשדות הבאים:
SERVICE_ACCOUNT_NAME: השם של חשבון השירותPROJECT_ID: מזהה הפרויקט שבו יצרתם את חשבון השירות
-
מוודאים שיש לכם את תפקיד ה-IAM Create Service Accounts (
יצירה ופריסה של תהליך עבודה צאצא
תהליך עבודה צאצא יכול לקבל ולעבד נתונים מתהליך עבודה אב. כדי להדגים את זה, זרימת העבודה המשנית מבצעת את הפעולות הבאות:
- מקבלת מספר שלם כארגומנט
- הפונקציה נכנסת למצב שינה למשך 10 שניות כדי לדמות עיבוד
הפונקציה מחזירה אינדיקטור (בהתאם לכך שהמספר השלם הוא מספר אי-זוגי או זוגי) כדי לדמות הצלחה או כישלון של הפעלת תהליך העבודה
המסוף
נכנסים לדף Workflows במסוף Google Cloud .
לוחצים על Create.
מזינים את השם
workflow-childלתהליך העבודה החדש.ברשימה Region בוחרים באפשרות us-central1.
בוחרים את חשבון השירות שיצרתם קודם.
לוחצים על הבא.
בעורך תהליכי העבודה, מזינים את ההגדרה הבאה לתהליך העבודה:
לוחצים על פריסה.
gcloud
יוצרים קובץ קוד מקור לתהליך העבודה:
touch workflow-child.yamlפותחים את קובץ קוד המקור בכלי לעריכת טקסט ומעתיקים את תהליך העבודה הבא לקובץ.
פריסת תהליך העבודה:
gcloud workflows deploy workflow-child \ --source=workflow-child.yaml \ --location=us-central1 \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
מחליפים את
SERVICE_ACCOUNT_NAMEבשם של חשבון השירות שיצרתם קודם.
יצירה ופריסה של תהליך העבודה הראשי
תהליך העבודה הראשי מפעיל כמה ענפים של תהליך העבודה המשני באמצעות לולאה מקבילה for.
מעתיקים את קוד המקור של הגדרת תהליך העבודה. הוא מורכב מהחלקים הבאים:
המפה משמשת לאחסון התוצאות של הרצות תהליכי העבודה של הילדים. מידע נוסף זמין במאמר בנושא מפות.
לולאת
forמופעלת במקביל כדי להפעיל את תהליך העבודה המשני. מידע נוסף זמין במאמרים בנושא שלבים מקבילים ואיטרציה.תהליך העבודה של הילד מופעל באמצעות מחבר. בכל איטרציה של זרימת העבודה המשנית מועבר הארגומנט
iteration. תהליך העבודה הראשי ממתין לתוצאה של כל תהליך צאצא ומאחסן אותה. מידע נוסף זמין במאמרים בנושא מחבר Workflows Executions API וארגומנטים של זמן ריצה.תוצאות ההפעלה מוחזרות. מידע נוסף זמין במאמר בנושא השלמת ההפעלה של תהליך עבודה.
פריסת תהליך העבודה:
המסוף
נכנסים לדף Workflows במסוף Google Cloud :
לוחצים על Create.
מזינים את השם
workflow-parentלתהליך העבודה החדש.ברשימה Region בוחרים באפשרות us-central1.
בוחרים את חשבון השירות שיצרתם קודם.
לוחצים על הבא.
בעורך תהליכי העבודה, מדביקים את ההגדרה של תהליך העבודה הראשי.
לוחצים על פריסה.
gcloud
יוצרים קובץ קוד מקור לתהליך העבודה:
touch workflow-parent.yamlפותחים את קובץ קוד המקור בכלי לעריכת טקסט ומדביקים את ההגדרה של תהליך העבודה הראשי.
פריסת תהליך העבודה:
gcloud workflows deploy workflow-parent \ --source=workflow-parent.yaml \ --location=us-central1 \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
מחליפים את
SERVICE_ACCOUNT_NAMEבשם של חשבון השירות שיצרתם קודם.
הפעלת תהליך העבודה הראשי
מריצים את תהליך העבודה של ההורה כדי שהפעלות של תהליך העבודה של הצאצא ירוצו במקביל. ההרצות אמורות להימשך כ-10 שניות.
המסוף
נכנסים לדף Workflows במסוף Google Cloud :
בדף Workflows (תהליכי עבודה), לוחצים על תהליך העבודה workflow-parent כדי לעבור לדף הפרטים שלו.
בדף פרטי תהליך העבודה, לוחצים על play_arrow הפעלה.
לוחצים שוב על Execute.
תוצאות תהליך העבודה מוצגות בחלונית Output.
התוצאות צריכות להיות דומות לתוצאות הבאות, שבהן מצוינות שגיאות באיטרציות 2 ו-4, והצלחה באיטרציות 1 ו-3.
"failure": { "2": { "message": "Execution failed or cancelled.", "operation": { "argument": "{\"iteration\":2}", "duration": "10.157992541s", "endTime": "2023-07-11T13:13:13.028424329Z", "error": { "context": "RuntimeError: \"Error with iteration 2\"\nin step \"raise_error\", routine \"main\", line: 18", "payload": "\"Error with iteration 2\"", ... "4": { "message": "Execution failed or cancelled.", "operation": { "argument": "{\"iteration\":4}", "duration": "10.157929734s", "endTime": "2023-07-11T13:13:13.061289142Z", "error": { "context": "RuntimeError: \"Error with iteration 4\"\nin step \"raise_error\", routine \"main\", line: 18", "payload": "\"Error with iteration 4\"", ... "success": { "1": "Hello world1", "3": "Hello world3"
gcloud
מריצים את תהליך העבודה:
gcloud workflows run workflow-parent \ --location=us-central1
התוצאות צריכות להיות דומות לתוצאות הבאות, שבהן מצוינות שגיאות באיטרציות 2 ו-4, והצלחה באיטרציות 1 ו-3.
Waiting for execution [06c753e4-6947-4c62-ac0b-2a9d53fb1b8f] to complete...done. argument: 'null' duration: 14.065415004s endTime: '2023-07-11T12:50:43.929023883Z' name: projects/386837416586/locations/us-central1/workflows/workflow-parent/executions/06c753e4-6947-4c62-ac0b-2a9d53fb1b8f result: '{"failure":{"2":{"message":"Execution failed or cancelled.","operation":{"argument":"{\"iteration\":2}","duration":"10.143718070s","endTime":"2023-07-11T12:50:40.673209821Z","error":{"context":"RuntimeError: ... "Error with iteration 2\"\nin step \"raise_error\", routine \"main\", line: 18","payload":"\"Error ... "Error with iteration 4\"\nin step \"raise_error\", routine \"main\", line: 18","payload":"\"Error ... "success":{"1":"Hello world1","3":"Hello world3"}}' startTime: '2023-07-11T12:50:29.863608879Z' state: SUCCEEDED
יצרתם והטמעתם תהליך עבודה שמפעיל תהליך עבודה משני, מבצע ארבע חזרות של תהליך העבודה המשני בענפים מקבילים ומחזיר אינדיקטור של הצלחה או כישלון לכל הפעלה של תהליך העבודה המשני.
הסרת המשאבים
אם יצרתם פרויקט חדש בשביל המדריך הזה, תמחקו את הפרויקט. אם השתמשתם בפרויקט קיים ואתם רוצים לשמור אותו בלי השינויים שנוספו במדריך הזה, תצטרכו למחוק את המשאבים שנוצרו לצורך המדריך.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת משאבי הדרכה
מחיקת תהליכי העבודה שנוצרו במדריך הזה:
gcloud workflows delete workflow-child gcloud workflows delete workflow-parent
המאמרים הבאים
- מידע נוסף על התחביר של Workflows זמין במאמר הפניה לתחביר של Workflows.
- מידע נוסף על מחברים ב-Workflows זמין במאמר הסבר על מחברים.