הפעלות של תהליכי עבודה מאפשרות לכם לתזמר ולבצע אוטומציה של משימות מרובות שלבים בשירותיGoogle Cloud ובממשקי API חיצוניים. התחלת ביצוע מפעילה את הגדרת תהליך העבודה הנוכחית שמשויכת לתהליך העבודה. אפשר להעביר ארגומנטים של זמן ריצה בבקשת הפעלה ולגשת לארגומנטים האלה באמצעות משתני תהליך העבודה. למידע נוסף, אפשר לעיין במאמר העברת ארגומנטים של זמן ריצה בבקשת הפעלה.
אחרי שזרימת עבודה מסתיימת, ההיסטוריה והתוצאות שלה נשמרות למשך זמן מוגבל. מידע נוסף מופיע במאמר בנושא מכסות ומגבלות.
לפני שמתחילים
יכול להיות שהגבלות אבטחה שהוגדרו בארגון שלכם ימנעו מכם להשלים את השלבים הבאים. מידע לפתרון בעיות זמין במאמר פיתוח אפליקציות בסביבה 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.
-
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.
- אם תהליך העבודה ניגש למשאבים אחרים Google Cloud , צריך לוודא שהוא משויך לחשבון שירות עם ההרשאות הנכונות. כדי לדעת איזה חשבון שירות משויך לתהליך עבודה קיים, אפשר לעיין במאמר אימות חשבון השירות שמשויך לתהליך עבודה.
שימו לב: כדי ליצור משאב ולצרף חשבון שירות, נדרשות הרשאות ליצירת המשאב וההרשאה להתחזות לחשבון השירות שתצרפו למשאב. מידע נוסף זמין במאמר הרשאות לחשבון שירות.
- פורסים את זרימת העבודה באמצעות Google Cloud מסוף או Google Cloud CLI.
ביצוע של תהליך עבודה
אפשר להריץ תהליך עבודה בדרכים הבאות:
- במסוף Google Cloud
- באמצעות Google Cloud CLI בטרמינל או ב-Cloud Shell
- שליחת בקשה ישירה ל-Workflows API
אפשר גם להפעיל תהליך עבודה באמצעות ספריות הלקוח ב-Cloud. מידע נוסף זמין במאמר הפעלת תהליך עבודה באמצעות ספריות הלקוח של Cloud.
המסוף
כדי להפעיל תהליך עבודה, במסוף Google Cloud , נכנסים לדף Workflows:
בדף Workflows, בוחרים תהליך עבודה כדי לעבור לדף הפרטים שלו.
בדף פרטי תהליך העבודה, לוחצים על play_arrow הפעלה.
בדף Execute workflow (הפעלת תהליך העבודה), בחלונית Input (קלט), אפשר להזין ארגומנטים אופציונליים של זמן ריצה כדי להעביר אותם לתהליך העבודה לפני ההפעלה. הארגומנטים צריכים להיות בפורמט JSON. לדוגמה,
{"animal":"cat"}. אם בתהליך העבודה שלכם לא נעשה שימוש בארגומנטים של זמן ריצה, משאירים את השדה הזה ריק.אפשר גם לציין את רמת רישום השיחות שרוצים להחיל על הביצוע של תהליך העבודה. ברשימה Call log level (רמת יומן השיחות), בוחרים באחת מהאפשרויות הבאות:
- לא צוין: לא צוינה רמת רישום ביומן. (זוהי ברירת המחדל) רמת היומן של ההפעלה מקבלת עדיפות על פני כל רמת יומן של תהליך העבודה, אלא אם רמת היומן של ההפעלה לא צוינה (ברירת המחדל). במקרה כזה, רמת היומן של תהליך העבודה חלה.
- שגיאות בלבד: רישום ביומן של כל החריגות שתועדו, או כששיחה נעצרת בגלל חריגה.
- כל השיחות: רישום כל השיחות בפונקציות של תהליכי משנה או בספרייה, והתוצאות שלהן.
- ללא יומנים: לא מתבצעת רישום של שיחות ביומן.
אפשר גם לציין את רמת היסטוריית הביצוע שרוצים להחיל על ביצוע זרימת העבודה. ברשימה Execution history בוחרים באחת מהאפשרויות הבאות:
- קבלת ההגדרה בירושה מתהליך העבודה: החלת ההגדרה של היסטוריית ההרצה של תהליך העבודה. (זוהי ברירת המחדל)
- בסיסי: הפעלת היסטוריית ביצוע בסיסית.
- מפורט: הפעלת היסטוריית ביצוע מפורטת כולל ערכי משתנים בהיקף והמספר הצפוי של איטרציות.
לוחצים על Execute.
בדף פרטי ההפעלה אפשר לראות את תוצאות ההפעלה, כולל הפלט, מזהה ההפעלה והמצב, וגם את השלב הנוכחי או הסופי של הפעלת תהליך העבודה. מידע נוסף זמין במאמר בנושא גישה לתוצאות של הרצת תהליכי עבודה.
gcloud
פותחים טרמינל.
מוצאים את השם של תהליך העבודה שרוצים להפעיל. אם אתם לא יודעים את שם תהליך העבודה, אתם יכולים להזין את הפקודה הבאה כדי לראות רשימה של כל תהליכי העבודה שלכם:
gcloud workflows list
אפשר להריץ את תהליך העבודה באמצעות הפקודה
gcloud workflows runאו הפקודהgcloud workflows execute:מריצים את תהליך העבודה וממתינים לסיום ההרצה:
gcloud workflows run WORKFLOW_NAME \ --call-log-level=CALL_LOGGING_LEVEL \ --execution-history-level="EXECUTION_HISTORY_LEVEL" \ --data=DATA
הפעלת תהליך העבודה בלי לחכות לסיום ניסיון ההפעלה:
gcloud workflows execute WORKFLOW_NAME \ --call-log-level=CALL_LOGGING_LEVEL \ --execution-history-level="EXECUTION_HISTORY_LEVEL" \ --data=DATA
מחליפים את מה שכתוב בשדות הבאים:
-
WORKFLOW_NAME: השם של תהליך העבודה.
CALL_LOGGING_LEVEL(אופציונלי): רמת רישום השיחות להחלה במהלך ההרצה. יכול להיות אחד מהערכים הבאים:-
none: לא צוינה רמת רישום ביומן. (זוהי ברירת המחדל) רמת היומן של ההפעלה מקבלת עדיפות על פני כל רמת יומן של תהליך העבודה, אלא אם רמת היומן של ההפעלה לא צוינה (ברירת המחדל). במקרה כזה, רמת היומן של תהליך העבודה חלה. -
log-errors-only: רישום ביומן של כל החריגות שזוהו, או כששיחה נעצרת בגלל חריגה. -
log-all-calls: רישום ביומן של כל הקריאות לפונקציות של תהליכי משנה או ספריות והתוצאות שלהן. -
log-none: אין רישום של שיחות.
-
EXECUTION_HISTORY_LEVEL(אופציונלי): רמת היסטוריית הביצוע להחלה במהלך הביצוע. יכול להיות אחד מהערכים הבאים:-
none: לא צוינה רמה של היסטוריית הביצוע. זוהי אפשרות ברירת המחדל. אם לא מציינים רמה של היסטוריית ביצועים לביצוע, הרמה נקבעת לפי הרמה שחלה על תהליך העבודה. אם הרמות שונות, ההגדרה שחלה ברמת הביצוע מבטלת את ההגדרה שחלה ברמת תהליך העבודה עבור הביצוע הזה. -
execution-history-basic: הפעלת היסטוריית ביצוע בסיסית. -
execution-history-detailed: הפעלת היסטוריית ביצוע מפורטת כולל ערכי משתנים כלשהם בהיקף ומספר האיטרציות הצפוי.
-
DATA(אופציונלי): ארגומנטים של זמן ריצה לזרימת העבודה בפורמט JSON.
-
אם הפעלתם את הפקודה
gcloud workflows execute, יוחזר המזהה הייחודי של ניסיון ההפעלה של זרימת העבודה, והפלט יהיה דומה לזה:To view the workflow status, you can use following command: gcloud workflows executions describe b113b589-8eff-4968-b830-8d35696f0b33 --workflow workflow-2 --location us-central1
כדי לראות את סטטוס ההרצה, מזינים את הפקודה שהוחזרה בשלב הקודם.
אם הניסיון להפעיל את זרימת העבודה יצליח, הפלט ייראה כך, עם state שמציין שהזרימה הסתיימה בהצלחה, ועם status שמציין את השלב האחרון בזרימת העבודה שהופעל.
argument: '{"searchTerm":"Friday"}' endTime: '2022-06-22T12:17:53.086073678Z' name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/c4dffd1f-13db-46a0-8a4a-ee39c144cb96 result: '["Friday","Friday the 13th (franchise)","Friday Night Lights (TV series)","Friday the 13th (1980 film)","Friday the 13th","Friday the 13th (2009 film)","Friday the 13th Part III","Friday the 13th Part 2","Friday (Rebecca Black song)","Friday Night Lights (film)"]' startTime: '2022-06-22T12:17:52.799387653Z' state: SUCCEEDED status: currentSteps: - routine: main step: returnOutput workflowRevisionId: 000001-ac2
API בארכיטקטורת REST
כדי ליצור הפעלה חדשה באמצעות הגרסה האחרונה של תהליך עבודה מסוים, משתמשים בשיטה projects.locations.workflows.executions.create.
לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:
-
PROJECT_NUMBER: מספר הפרויקט שלכם Google Cloud שמופיע בדף IAM & Admin Settings. -
LOCATION: האזור שבו תהליך העבודה נפרס. לדוגמה,us-central1. -
WORKFLOW_NAME: השם שהמשתמש הגדיר לזרימת העבודה. לדוגמה,myFirstWorkflow. -
PARAMETER: אופציונלי. אם אפשר להעביר לאמצעי הבקרה של זרימת העבודה שאתם מריצים ארגומנטים של זמן ריצה כחלק מבקשת ההרצה, אתם יכולים להוסיף לגוף הבקשה מחרוזת בפורמט JSON שהערך שלה הוא צמד או יותר של פרמטרים וערכים עם תווי בריחה – לדוגמה,"{\"searchTerm\":\"asia\"}". -
VALUE: אופציונלי. הערך של זוג פרמטר-ערך שהתסריט יכול לקבל כארגומנט בזמן הריצה. -
CALL_LOGGING_LEVEL: אופציונלי. רמת רישום השיחות שרוצים להחיל במהלך הביצוע. ברירת המחדל היא שלא מצוינת רמת רישום ביומן, ובמקום זאת חלה רמת הרישום ביומן של תהליך העבודה. מידע נוסף מופיע במאמר בנושא שליחת יומנים אל Logging. אחד מהערכים הבאים:-
CALL_LOG_LEVEL_UNSPECIFIED: לא צוינה רמת רישום ביומן, ובמקום זאת חלה רמת הרישום ביומן של תהליך העבודה. (זוהי ברירת המחדל) אחרת, רמת היומן של ההפעלה חלה ומקבלת עדיפות על פני רמת היומן של תהליך העבודה. -
LOG_ERRORS_ONLY: רישום ביומן של כל החריגות שזוהו, או כששיחה נעצרת בגלל חריגה. -
LOG_ALL_CALLS: רישום ביומן של כל הקריאות לפונקציות של ספריות או לתהליכי משנה, והתוצאות שלהן. -
LOG_NONE: אין רישום של שיחות.
-
-
BACKLOG_EXECUTION: אופציונלי. אם המדיניות מוגדרת לערךtrue, התהליך לא יתווסף לתור כשהמכסה של מספר הפעולות המקבילות תמוצה. מידע נוסף מופיע במאמר בנושא ניהול של הצטברות בקשות לביצוע. EXECUTION_HISTORY_LEVEL: אופציונלי. רמת היסטוריית הביצוע שתחול במהלך הביצוע. מידע נוסף זמין במאמר בנושא הצגת היסטוריית השלבים של ההפעלה. אחת מהאפשרויות הבאות:-
EXECUTION_HISTORY_LEVEL_UNSPECIFIED: לא צוינה רמה של היסטוריית ביצוע. (זוהי ברירת המחדל) אם לא מציינים רמה של היסטוריית ביצועים לביצוע, הרמה נקבעת לפי הרמה שחלה על תהליך העבודה. אם הרמות שונות, ההגדרה שחלה ברמת הביצוע מבטלת את ההגדרה שחלה ברמת תהליך העבודה עבור הביצוע הזה. -
EXECUTION_HISTORY_BASIC: הפעלת היסטוריית ביצוע בסיסית. EXECUTION_HISTORY_ADVANCED: הפעלת היסטוריית ביצוע מפורטת כולל ערכי משתנים בהיקף והמספר הצפוי של איטרציות.
-
תוכן בקשת JSON:
{
"argument": "{\"PARAMETER\":\"VALUE\"}",
"callLogLevel": "CALL_LOGGING_LEVEL",
"disableConcurrencyQuotaOverflowBuffering": "BACKLOG_EXECUTION",
"executionHistoryLevel": "EXECUTION_HISTORY_LEVEL"
}
כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:
אם הפעולה מצליחה, גוף התגובה מכיל מופע חדש של Execution:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_NAME/executions/EXECUTION_ID",
"startTime": "2023-11-07T14:35:27.215337069Z",
"state": "ACTIVE",
"argument": "{\"PARAMETER\":\"VALUE\"}",
"workflowRevisionId": "000001-2df",
"callLogLevel": "CALL_LOGGING_LEVEL",
"executionHistoryLevel": "EXECUTION_HISTORY_LEVEL",
"status": {}
}
בדיקת הסטטוס של ההרצות
יש כמה פקודות שיעזרו לכם לבדוק את הסטטוס של הרצת תהליך עבודה.
כדי לאחזר רשימה של ניסיונות ההרצה של תהליך עבודה ואת המזהים שלהם, מזינים את הפקודה הבאה:
gcloud workflows executions list WORKFLOW_NAME
מחליפים את
WORKFLOW_NAMEבשם של תהליך העבודה.הפקודה מחזירה ערך
NAMEשדומה לערך הבא:projects/PROJECT_NUMBER/locations/REGION/workflows/WORKFLOW_NAME/executions/EXECUTION_IDמעתיקים את מזהה ההפעלה כדי להשתמש בו בפקודה הבאה.
כדי לבדוק את הסטטוס של ניסיון הרצה ולהמתין לסיום הניסיון, מזינים את הפקודה הבאה:
gcloud workflows executions wait EXECUTION_ID
מחליפים את
EXECUTION_IDבמזהה של ניסיון ההפעלה.הפקודה ממתינה לסיום ניסיון ההרצה ואז מחזירה את התוצאות.
כדי להמתין עד שההרצה האחרונה תושלם ואז להחזיר את התוצאה של ההרצה שהושלמה, מזינים את הפקודה הבאה:
gcloud workflows executions wait-last
אם ניסיתם להריץ את הפקודה קודם באותה סשן
gcloud, הפקודה תמתין לסיום הניסיון הקודם ואז תחזיר את התוצאות של ההרצה שהסתיימה. אם לא קיים ניסיון קודם, הפונקציהgcloudמחזירה את השגיאה הבאה:ERROR: (gcloud.workflows.executions.wait-last) [NOT FOUND] There are no cached executions available.כדי לקבל את הסטטוס של ההפעלה האחרונה, מזינים את הפקודה הבאה:
gcloud workflows executions describe-last
אם ניסיתם להריץ את הפקודה קודם באותה סשן
gcloud, הפקודה תחזיר את התוצאות של ההרצה האחרונה גם אם היא עדיין פועלת. אם לא קיים ניסיון קודם,gcloudמחזירה את השגיאה הבאה:ERROR: (gcloud.beta.workflows.executions.describe-last) [NOT FOUND] There are no cached executions available.
סינון ההרצות
אפשר להחיל מסננים על רשימת ההרצות של זרימת העבודה שמוחזרת על ידי השיטה workflows.executions.list.
אפשר לסנן לפי השדות הבאים:
createTimedisableOverflowBufferingdurationendTimeexecutionIdlabelstartTimestatestepNameworkflowRevisionId
לדוגמה, כדי לסנן לפי תווית (labels."fruit":"apple"), אפשר לשלוח בקשת API דומה לזו:
GET https://workflowexecutions.googleapis.com/v1/projects/MY_PROJECT/locations/MY_LOCATION/workflows/MY_WORKFLOW/executions?view=full&filter=labels.%22fruit%22%3A%22apple%22"
כאשר:
-
view=fullמציין תצוגה שמגדירה אילו שדות צריכים להיות מלאים בהפעלות המוחזרות. במקרה הזה, כל הנתונים -
labels.%22fruit%22%3A%22apple%22הוא תחביר המסנן בקידוד כתובת URL
מידע נוסף זמין במאמר בנושא סינון AIP-160.
ניהול של הצטברות בקשות להרצה
אפשר להשתמש בגיבויים של ביצועים כדי להימנע מניסיונות חוזרים בצד הלקוח, להסיר עיכובים בביצוע ולמקסם את קצב העברת הנתונים. ההרצות שהצטברו בתור יופעלו באופן אוטומטי ברגע שמכסת ההרצות המקבילות תהיה זמינה.
יש מספר מקסימלי של הרצות פעילות של תהליכי עבודה שיכולות לפעול בו-זמנית. אחרי שמגיעים למכסה הזו, ואם השבתתם את הגיבוי של ההרצות או אם הגעתם למכסה של ההרצות שגובו, כל הרצה חדשה תיכשל ויוחזר קוד סטטוס HTTP 429 Too many requests. אם ההגדרה 'הוספה לתור של הרצות' מופעלת, ההרצות החדשות מצליחות ונוצרות במצב QUEUED. ברגע שהמכסה של הרצת תהליכים במקביל הופכת לזמינה, ההרצות מתבצעות באופן אוטומטי ועוברות למצב ACTIVE.
כברירת מחדל, התכונה 'הצטברות של בקשות לביצוע' מופעלת לכל הבקשות (כולל אלה שמופעלות על ידי Cloud Tasks), למעט המקרים הבאים:
- כשיוצרים הפעלה באמצעות מחבר
executions.runאוexecutions.createבתהליך עבודה, השהיית ההפעלה מושבתת כברירת מחדל. כדי להגדיר את זה, צריך להגדיר במפורש את השדהdisableConcurrencyQuotaOverflowBufferingשל ההרצה לערךfalse. - במקרים שבהם ההפעלה מופעלת על ידי Pub/Sub, התכונה 'הצטברות של בקשות להפעלה' מושבתת ואי אפשר להגדיר אותה.
שימו לב לנקודות הבאות:
- ההפעלות בתור מתחילות בסדר FIFO (מה שנכנס ראשון יוצא ראשון), על בסיס המאמץ הטוב ביותר.
- שדה
createTimeחותמת הזמן מציין מתי נוצרת הרצה. חותמת הזמןstartTimeמציינת מתי ביצוע נשלף אוטומטית מתור העבודה ומתי הוא מתחיל לפעול. במקרים שבהם הביצועים לא מושהים, שני ערכי חותמת הזמן זהים. - אפשר לראות את המגבלה של ביצועים שהצטברו באמצעות מדד המכסה
workflowexecutions.googleapis.com/executionbacklogentries. מידע נוסף מופיע במאמר איך רואים ומנהלים את המכסות.
השבתת הצטברות של בקשות להרצה
אפשר להשבית את הגיבוי של ביצוע הפקודות באמצעות הגדרת דגל כשמשתמשים ב-Google Cloud CLI. לדוגמה:
gcloud workflows execute WORKFLOW_NAME --disable-concurrency-quota-overflow-buffering
אפשר גם להשבית את הגיבוי של ההרצה על ידי הגדרת השדה disableConcurrencyQuotaOverflowBuffering לערך true בגוף ה-JSON של הבקשה כששולחים בקשת הרצה ל-API בארכיטקטורת REST של Workflows.
לדוגמה:
{ "argument": {"arg1":"value1"}, "callLogLevel": "LOG_NONE", "disableConcurrencyQuotaOverflowBuffering": true }
מידע נוסף מופיע במאמר בנושא הפעלת תהליך עבודה.
המאמרים הבאים
- גישה לתוצאות של ביצוע תהליך העבודה
- שליטה בסדר הביצוע בתהליך עבודה
- שליחת יומני הפעלה ל-Cloud Logging
- עדכון של תהליך עבודה קיים