במאמר הזה מוסבר איך להגדיר אירועי סטטוס מותאמים אישית שמתארים את הפעולות שאפשר להריץ במשימה באצווה, כשיוצרים ומריצים משימה באצווה. מידע נוסף על אירועי סטטוס זמין במאמר בנושא צפייה בהיסטוריה של משימה באמצעות אירועי סטטוס.
אירועי סטטוס מותאמים אישית מאפשרים לכם לספק פרטים נוספים בהיסטוריה של משימה לגבי ההתקדמות של הרכיבים שלה שניתנים להרצה. כך קל יותר לנתח את העבודה ולפתור בעיות. לדוגמה, אפשר להגדיר אירועים של סטטוס בהתאמה אישית שמתארים מתי מתחיל קטע קוד שניתן להרצה, מתי הוא מסתיים, מתי מגיעים לקטע קוד שניתן להרצה עם מחסום או מתי קורה אירוע חשוב במהלך ההתקדמות של הקוד.
לפני שמתחילים
- אם עוד לא השתמשתם ב-Batch, כדאי לעיין במאמר תחילת העבודה עם Batch ולהפעיל את Batch על ידי השלמת הדרישות המוקדמות לפרויקטים ולמשתמשים.
-
כדי לקבל את ההרשאות שדרושות ליצירת משימה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- הכלי לעריכת משימות באצווה (
roles/batch.jobsEditor) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות של המשימה, שמוגדר כברירת מחדל כחשבון השירות של Compute Engine שמוגדר כברירת מחדל
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
- הכלי לעריכת משימות באצווה (
הגדרת אירועים של סטטוסים מותאמים אישית
כדי להגדיר אירועים של סטטוס מותאם אישית, משתמשים באחת או יותר מהאפשרויות הבאות כשיוצרים משימה:
מתארים את המצב של רכיב הפעלה על ידי הגדרת השם המוצג שלו. אפשר לעשות את זה כשיוצרים עבודה באמצעות ה-CLI של gcloud או Batch API.
ציון אירועים חשובים בזמן הריצה על ידי כתיבת יומן משימות מובנה עם השדה
batch/custom/eventלכל אירוע. אפשר לעשות את זה כשמשתמשים בכל שיטה ליצירת משימה כחלק מההגדרות של סקריפט ושל קובץ הפעלה של מאגר תגים.
תיאור המצב של קובץ הפעלה
אתם יכולים להגדיר אירועים מותאמים אישית של סטטוס שמתארים את המצב של קובץ הפעלה, על ידי הגדרת השם המוצג של קובץ ההפעלה (השדה displayName).
אירועי הסטטוס המותאמים אישית שמתקבלים משתנים מעט בהתאם לסוגים השונים של רכיבים להפעלה:
אם מגדירים שם תצוגה לקובץ הפעלה של קונטיינר או לסקריפט הפעלה, Batch מוסיף באופן אוטומטי שני סוגים של אירועי סטטוס מותאמים אישית. האירוע הראשון של סטטוס מותאם אישית מציין מתי משימה מתחילה את ההפעלה הזו. האירוע השני של סטטוס בהתאמה אישית מציין מתי משימה מסתיימת, את האפשרות להפעלה ואת קוד היציאה התואם.
אם מגדירים שם מוצג למחסום הפעלה, Batch מוסיף באופן אוטומטי אירוע סטטוס מותאם אישית שמציין מתי משימה מגיעה למחסום הזה.
כדי ליצור ולהריץ עבודה עם אירועי סטטוס מותאמים אישית שמתארים את המצב של רכיב הפעלה, צריך להגדיר את השדה displayName עבור רכיב הפעלה אחד או יותר באמצעות ה-CLI של gcloud, Batch API או ספרייה.
gcloud
משתמשים ב-Google Cloud CLI כדי ליצור עבודה שכוללת את השדה displayName בהגדרה אחת או יותר של runnables בקובץ ה-JSON:
...
"runnables": [
{
"displayName":DISPLAY_NAME,
...
}
]
...
לדוגמה, עבודה עם אירועי סטטוס מותאמים אישית שמתארים את המצב של כל רכיב ניתן להפעלה יכולה לכלול קובץ הגדרות בפורמט JSON שדומה לזה:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"displayName":"DISPLAY_NAME1",
"script": {
"text": "echo Hello world from script 1 for task ${BATCH_TASK_INDEX}"
}
},
{
"displayName":"DISPLAY_NAME2",
"barrier": {}
},
{
"displayName":"DISPLAY_NAME3",
"script": {
"text": "echo Hello world from script 2 for task ${BATCH_TASK_INDEX}"
}
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את DISPLAY_NAME1, DISPLAY_NAME2 ו-DISPLAY_NAME3 בשם של הקובץ הניתן להרצה, שצריך להיות ייחודי בתוך הג'וב – לדוגמה, script 1, barrier 1 ו-script 2.
API
משתמשים ב-API בארכיטקטורת REST כדי ליצור משימה שכוללת את השדה displayName בהגדרה אחת או יותר של runnables בקובץ ה-JSON:
...
"runnables": [
{
"displayName":DISPLAY_NAME,
...
}
]
...
לדוגמה, עבודה עם אירועי סטטוס מותאמים אישית שמתארים את המצב של כל רכיב ניתן להפעלה יכולה לכלול קובץ הגדרות בפורמט JSON שדומה לזה:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"displayName":"DISPLAY_NAME1",
"script": {
"text": "echo Hello world from script 1 for task ${BATCH_TASK_INDEX}"
}
},
{
"displayName":"DISPLAY_NAME2",
"barrier": {}
},
{
"displayName":"DISPLAY_NAME3",
"script": {
"text": "echo Hello world from script 2 for task ${BATCH_TASK_INDEX}"
}
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את DISPLAY_NAME1, DISPLAY_NAME2 ו-DISPLAY_NAME3 בשם של הקובץ הניתן להרצה, שצריך להיות ייחודי בתוך הג'וב – לדוגמה, script 1, barrier 1 ו-script 2.
המשך
Java
Node.js
Python
אחרי שהרצתם את המשימה לדוגמה, אירועי הסטטוס המותאם אישית שמתקבלים לכל משימה דומים לאלה:
statusEvents:
...
- description: 'script at index #0 with display name [DISPLAY_NAME1] started.'
eventTime: '...'
type: RUNNABLE_EVENT
- description: 'script at index #0 with display name [DISPLAY_NAME1] finished with exit
code 0.'
eventTime: '...'
type: RUNNABLE_EVENT
- description: 'barrier at index #2 with display name [DISPLAY_NAME2] reached.'
eventTime: '...'
type: BARRIER_REACHED_EVENT
- description: 'script at index #2 with display name [DISPLAY_NAME3] started.'
eventTime: '...'
type: RUNNABLE_EVENT
- description: 'script at index #2 with display name [DISPLAY_NAME3] finished with exit
code 0.'
eventTime: '...'
type: RUNNABLE_EVENT
...
ציון אירועים חשובים בזמן הריצה
אתם יכולים להגדיר אירועי סטטוס בהתאמה אישית שמציינים מתי מתרחש אירוע חשוב בזמן שהקובץ הניתן להפעלה פועל. כדי לעשות זאת, צריך להגדיר את הקובץ הניתן להפעלה כך שיכתוב יומן משימות מובנה שמגדיר מחרוזת לשדה של אירוע הסטטוס בהתאמה אישית של Batch (batch/custom/event).
אם קובץ הפעלה של קונטיינר או קובץ הפעלה של סקריפט כותב יומן משימות מובנה שמגדיר את שדה ה-JSON batch/custom/event, הוא יוצר אירוע סטטוס מותאם אישית באותו זמן. יכול להיות שתגדירו את יומן המשימות המובנה כך שיכלול שדות נוספים, אבל אירוע הסטטוס בהתאמה אישית כולל רק את המחרוזת של השדה batch/custom/event.
כדי ליצור ולהריץ משימה עם אירועי סטטוס מותאמים אישית שמציינים מתי מתרחש אירוע חשוב, מגדירים הפעלה אחת או יותר של קובצי הפעלה כדי לכתוב יומן מובנה על ידי הדפסת JSON ומגדירים את השדה batch/custom/event כחלק מהיומן.
...
"runnables": [
{
...
"echo '{\"batch/custom/event\":\"EVENT_DESCRIPTION\"}'"
...
}
]
...
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
...
לדוגמה, למשימה עם אירועי סטטוס מותאמים אישית שמציינים מתי מתרחש אירוע חשוב יכול להיות קובץ הגדרות JSON שדומה לזה:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "sleep 30; echo '{\"batch/custom/event\": \"EVENT_DESCRIPTION\"}'; sleep 30"
}
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
מחליפים את EVENT_DESCRIPTION בתיאור של אירוע הסטטוס המותאם אישית, לדוגמה, halfway done.
אחרי שהרצתם את המשימה לדוגמה, אירוע הסטטוס המותאם אישית שמתקבל לכל משימה דומה לזה:
statusEvents:
...
- description: EVENT_DESCRIPTION
eventTime: '...'
type: RUNNABLE_CUSTOM_EVENT
...
המאמרים הבאים
- אם נתקלתם בבעיות ביצירה או בהפעלה של משימה, תוכלו להיעזר בפתרון בעיות.
- איך רואים אירועים שקשורים לסטטוס
- איך כותבים יומני משימות
- מידע נוסף על אפשרויות ליצירת משרות