בדף הזה מוסבר איך להשתמש ב-Cloud Scheduler כדי להריץ תהליך עבודה בתזמון מסוים, למשל כל יום שני בשעה 9:00 או כל 15 דקות. אפשר להגדיר את לוח הזמנים במסוף Google Cloud או באמצעות Google Cloud CLI.
לפני שמתחילים
- אם עדיין אין לכם תהליך עבודה שאתם רוצים לתזמן, אתם צריכים ליצור ולפרוס אותו.
מפעילים את Cloud Scheduler API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים
לחלופין, מזינים את הפקודה הבאה בטרמינל:
gcloud services enable cloudscheduler.googleapis.com
תזמון תהליך עבודה
יוצרים חשבון שירות כדי ש-Cloud Scheduler יוכל לשלוח בקשות ל-Workflows API:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
מחליפים את
SERVICE_ACCOUNT_NAMEבשם באורך של 6 עד 30 תווים. הוא יכול להכיל תווים אלפאנומריים באותיות קטנות ומקפים. אחרי שיוצרים חשבון שירות, אי אפשר לשנות את השם שלו.כדי לאפשר לחשבון המשתמש שיריץ את הפקודות של Cloud Scheduler לפעול כחשבון שירות לניהול זהויות והרשאות גישה (IAM), צריך להקצות תפקיד שמאפשר לחשבון המשתמש להתחזות לחשבון השירות.
נותנים לחשבון השירות החדש את התפקיד workflows.invoker כדי שלחשבון תהיה הרשאה להפעיל את תהליך העבודה:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role roles/workflows.invoker
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
SERVICE_ACCOUNT_NAME: השם של חשבון השירות שיצרתם קודם.
-
יוצרים משימה ב-Cloud Scheduler שמפעילה את תהליך העבודה, באמצעות חשבון השירות שיצרתם קודם לאימות.
שימו לב: אם אתם משתמשים ברישום שיחות, אתם צריכים להגדיר אותו דרך הדף Workflows במסוףGoogle Cloud . פרטים נוספים מופיעים בשלבים הבאים.
המסוף
כדי לתזמן הפעלה של זרימת עבודה, עוברים לדף Workflows במסוף Google Cloud :
בדף Workflows, בוחרים תהליך עבודה כדי לעבור לדף הפרטים שלו.
בדף פרטי תהליך העבודה, לוחצים על edit עריכה.
בדף Edit workflow (עריכת תהליך העבודה), לוחצים על Add new trigger > Cloud Scheduler (הוספת טריגר חדש > Cloud Scheduler).
נפתחת החלונית Create a Scheduler job.
הגדרת לוח הזמנים:
בשדה Name, מזינים שם למשימה ב-Cloud Scheduler. הוא חייב להיות ייחודי בין כל המשרות באותו אזור.
ברשימה Region, בוחרים אזור מתאים, לדוגמה, us-central1.
בשדה תדירות, מציינים את פרק הזמן שרוצים להגדיר בפורמט unix-cron. לדוגמה, כדי לתזמן את תהליך העבודה לביצוע כל 5 דקות, מקלידים
*/5 * * * *.ברשימה Timezone, בוחרים את אזור הזמן שבו Cloud Scheduler צריך להשתמש כדי לפרש את התזמון שסיפקתם. אפשר לחפש לפי מדינה.
לוחצים על Continue.
מגדירים את הביצוע:
בשדה Workflow's argument (ארגומנט של תהליך העבודה), מציינים ארגומנטים של זמן ריצה להעברה לתהליך העבודה לפני ההפעלה. הארגומנטים צריכים להיות בפורמט JSON. לדוגמה:
. אם בתהליך העבודה שלכם לא נעשה שימוש בארגומנטים של זמן ריצה, אפשר לאשר את ברירת המחדל{"firstName":"Sherlock", "lastName":"Holmes"}{}או להשאיר את השדה ריק.ברשימה Workflow's call log level, בוחרים את הרמה של call logging שרוצים להחיל במהלך ההפעלה של תהליך העבודה:
- לא צוין: לא צוינה רמת רישום. (זוהי ברירת המחדל) רמת היומן של ההפעלה מקבלת עדיפות על פני כל רמת יומן של תהליך העבודה, אלא אם לא צוינה רמת היומן של ההפעלה (ברירת המחדל). במקרה כזה, חלה רמת היומן של תהליך העבודה.
- שגיאות בלבד: רישום ביומן של כל החריגות שתועדו, או כששיחה נעצרת בגלל חריגה.
- כל השיחות: רישום ביומן של כל השיחות עם פונקציות של תהליכי משנה או של ספרייה, והתוצאות שלהן.
- ללא יומנים: לא מתבצעת רישום של שיחות ביומן.
ברשימה Service account, בוחרים את חשבון השירות שיצרתם קודם.
לוחצים על יצירה.
שימו לב: אם אתם מעדכנים תהליך עבודה קיים, לא צריך לפרוס מחדש את תהליך העבודה.
המשימה של Cloud Scheduler מופיעה עכשיו בכרטיסייה Triggers בדף Workflow details.
אם רוצים לעדכן או למחוק את המשרה, צריך לערוך את תהליך העבודה:
- בדף פרטי תהליך העבודה, לוחצים על edit עריכה.
- בקטע Triggers (טריגרים), מוצאים את העבודה שרוצים לעדכן או למחוק.
- לוחצים על edit עריכת המשאב או על delete מחיקת המשאב.
gcloud
פותחים טרמינל ומזינים את הפקודה הבאה:
gcloud scheduler jobs create http JOB_NAME \ --schedule="FREQUENCY" \ --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \ --message-body="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \ --time-zone="TIME_ZONE" \ --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"
מחליפים את מה שכתוב בשדות הבאים:
-
JOB_NAME: השם שאתם נותנים למשימה ב-Cloud Scheduler. -
FREQUENCY: פרק זמן שמוגדר בפורמט unix-cron. לדוגמה, כדי לתזמן את תהליך העבודה לביצוע כל 5 דקות, מקלידים*/5 * * * *. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
REGION_NAME: האזור שבו נמצא תהליך העבודה, למשלus-central1. -
WORKFLOW_NAME: השם של זרימת העבודה שרוצים לתזמן את ההפעלה שלה. -
DOUBLE_ESCAPED_JSON_STRING: קידוד JSON של ארגומנטים שמועברים. המירכאות הכפולות בתוך המחרוזת שתחומה במירכאות מסומנות בתו בריחה (escape) באמצעות לוכסנים הפוכים (\). לדוגמה:--message-body="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}" -
TIME_ZONE: אזור הזמן שבו Cloud Scheduler צריך להשתמש כדי לפרש את לוח הזמנים שסיפקתם. לדוגמה:America/New_York. -
SERVICE_ACCOUNT_NAME: השם של חשבון השירות שיצרתם קודם.
-
כדי להציג את כל המשרות בפרויקט:
gcloud scheduler jobs list
כדי למחוק משרה:
gcloud scheduler jobs delete JOB_NAME
תהליך העבודה יפעל עכשיו בהתאם לתדירות שהגדרתם.
המאמרים הבאים
- שימוש ב-IAM כדי לשלוט בגישה
- העברת ארגומנטים של זמן ריצה בבקשת ביצוע
- מדריך: תזמון של Workflows באמצעות Cloud Scheduler