יעד Pub/Sub
אם בוחרים את סוג היעד Pub/Sub:מציינים את שם הנושא שבו העבודה תפורסם. זהו נושא ב-Pub/Sub שכבר הגדרתם בפרויקט.
מציינים את ההודעה שתישלח לנושא. הערך הזה נשלח כפרמטר
dataבהודעת Pub/Sub. דוגמה לכך מופיעה במדריך למתחילים.מוסיפים את מאפייני ההודעה שרוצים.
מגדירים הגדרות נוספות באמצעות הקטע
Configure optional settings.
Cloud Scheduler יפרסם הודעות בנושא הזה כחשבון שירות של Google APIs.
יעד HTTP ב-App Engine
אם בוחרים בסוג היעד App Engine HTTP, צריך להשתמש באפליקציית App Engine ובאזור שמשויך לפרויקט הנוכחי. אם רוצים להשתמש באפליקציית App Engine אחרת מחוץ לפרויקט הנוכחי, צריך לבחור באפשרות HTTP כיעד, ולא באפשרות App Engine HTTP. כללי חומת האש של היעד צריכים לאפשר בקשות מטווח כתובות ה-IP 0.1.0.2/32.מגדירים את הטופס באופן הבא:
ברשימה Target type, בוחרים באפשרות App Engine HTTP.
מציינים את השם של שירות App Engine שמריץ את ה-handler של משימת Cloud Scheduler. אם משמיטים את הארגומנט, הפונקציה פועלת בהנחה שמדובר בשירות
default. אם רוצים להגדיר את זה, אפשר למצוא את שמות השירותים במסוףGoogle Cloud .אפשר גם לציין את הגרסה. אם לא מגדירים את הערך הזה, המערכת משתמשת בגרסה שמוצגת כרגע. אפשר לראות את הגרסאות הזמינות במסוףGoogle Cloud .
אפשר גם לציין את המופע. אם לא מגדירים את המדיניות, אפשר להשתמש בכל מכונה זמינה. אפשר לראות את הגרסאות הזמינות במסוףGoogle Cloud .
מציינים את כתובת ה-URL היחסית של נקודת הקצה של App Engine שאליה העבודה תיצור קשר. אם משתמשים בערך ברירת המחדל
/, העבודה תשתמש בערךPROJECT-ID.appspot.com, כאשרPROJECT-IDהוא מזהה הפרויקט הנוכחי.מגדירים את שיטת ה-HTTP שרוצים להשתמש בה כשהעבודה מופעלת. ערך ברירת המחדל הוא
POST.מוסיפים את הכותרות שצריך לבקשה.
אפשר גם לציין את נתוני הגוף שיישלחו ליעד. הנתונים האלה נשלחים בגוף הבקשה כבייטים כשבוחרים בשיטת HTTP
POSTאוPUT.
נקודות קצה של App Engine שמיועדות לטירגוט צריכות להיות באותו פרויקט, ואפשר לאבטח אותן באמצעות login: admin ברכיב handlers בקובץ app.yaml.
יעד HTTP
אם בוחרים בסוג היעד HTTP:מציינים את כתובת ה-URL המוגדרת במלואה של נקודת הקצה שאליה העבודה תתחבר.
מציינים את ה-method של ה-HTTP. ערך ברירת המחדל הוא
POST.אפשר גם לציין את הנתונים שיישלחו ליעד. הנתונים האלה נשלחים בגוף הבקשה כבייטים כשבוחרים בשיטת HTTP
POSTאוPUT.מוסיפים את הכותרות שרוצים.
כדי ליצור משימת HTTP Target שדורשת אימות, ראו שימוש באימות עם HTTP Target.
נקודות קצה (endpoints) של HTTP שמטרגטים אותן צריכות להיות נגישות לכולם.
אפשר להשתמש ב-Cloud Scheduler כדי להגדיר יחידות עבודה מתוזמנות, שנקראות משימות cron, שנשלחות אל יעדים בלוח זמנים חוזר, שנקרא גם מרווח או תדירות המשימה.
בכל רגע נתון צריך להריץ רק מופע אחד של משימה. במקרים נדירים, יכול להיות שיישלחו בקשות לכמה מופעים של אותה משימה. לכן, המטפל בבקשות צריך להיות אידמפוטנטי, והקוד צריך לוודא שלא יהיו תופעות לוואי מזיקות אם זה יקרה.
אם משימה עדיין פועלת או ממתינה לתגובה מהיעד שלה, ריצות מתוזמנות אחרות של המשימה מדלגות עד שהריצה הנוכחית מסתיימת או עד שחלף הזמן הקצוב לתגובה. מידע נוסף זמין במאמר בנושא הפעלות עתידיות של משימות לא מתחילות.
Cloud Scheduler מיועד למשימות חוזרות. אם אתם צריכים להריץ משימה רק פעם אחת, כדאי להשתמש ב-Cloud Tasks, שמאפשר לתזמן משימה עד 30 ימים מראש.
לפני שמתחילים
מוודאים שהגדרתם את הסביבה ל-Cloud Scheduler.
בחירת סוג יעד
Cloud Scheduler יכול להפעיל את סוגי היעדים הבאים:
נקודות הקצה ב-HTTP
נושאים ב-Pub/Sub
שירותי App Engine
הפעלת שירותי יעד שמוגבלים לכניסה פנימית
אפשר להפעיל את השירותים הבאים באופן פנימי באמצעות Cloud Scheduler:
- פונקציות Cloud Run
- Cloud Run (בכתובת ה-URL
run.app, לא בדומיינים מותאמים אישית)
כדי להפעיל את יעדי ה-Cloud Scheduler האלה באופן פנימי, היעד צריך להיות באותוGoogle Cloud פרויקט או באותו היקף של VPC Service Controls כמו משימת Cloud Scheduler.
מידע נוסף על אבטחת יעדים באמצעות הגבלת תעבורת הכניסה זמין במאמרים הגבלת תעבורת כניסה (ל-Cloud Run) והגדרת הגדרות רשת (לפונקציות של Cloud Run).
יצירת משרה
אפשר ליצור עבודה באמצעות מסוף Google Cloud או Google Cloud CLI.
המסוף
נכנסים לדף Cloud Scheduler במסוף Google Cloud .
לוחצים על Create job (יצירת משימה).
בשדה Name, מזינים שם לעבודה שיהיה ייחודי לפרויקט.
אחרי שמוחקים את העבודה המשויכת, אפשר להשתמש שוב בשם של העבודה בפרויקט.
ברשימה Region, בוחרים אזור.
אם משתמשים ביעד HTTP של App Engine, צריך לבחור את אותו אזור כמו אפליקציית App Engine. מידע נוסף זמין במאמר אזורים נתמכים לפי יעד.
אפשר גם להוסיף תיאור קצר של העבודה, למשל תזכורת לגבי מה שהעבודה עושה.
התיאור הזה מופיע במסוף לצד שם המשימה.
מציינים את התדירות שבה המשימה תפעל באמצעות מחרוזת הגדרה.
לדוגמה, המחרוזת
0 1 * * 0מריצה את העבודה פעם בשבוע בשעה 1:00 בכל יום ראשון בבוקר. המחרוזת שאתם מציינים כאן יכולה להיות כל מחרוזת שתואמת ל-unix-cron. מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.ברשימה Timezone, בוחרים את אזור הזמן שבו רוצים להשתמש לתזמון העבודה.
לוחצים על Continue.
מציינים את סוג היעד:
Pub/Sub: צריך לציין את השם של נושא Pub/Sub שכבר הגדרתם בפרויקט ושעליו העבודה תתפרסם.
App Engine HTTP: צריך להשתמש באפליקציית App Engine ובאזור שמשויך לפרויקט הנוכחי.
לוחצים על Continue.
אופציונלי: כדי להגדיר התנהגות של ניסיון חוזר, לוחצים על הגדרת הגדרות אופציונליות. כדי לציין משך זמן, משתמשים ברצף של מספרים שלמים עשרוניים לא שליליים עם סיומות היחידות הבאות:
- h - hour
- m – minute (דקה)
- s – שנייה
- ms – אלפית שנייה
- us - microsecond
- ns - nanosecond
אסור להשתמש בערכים שליליים או בשברים. השדה
Max retry durationתומך רק בערכיםh,mו-s. גםMin backoff durationוגםMax backoff durationתומכים בכל הסט.אופציונלית, ליעדי HTTP ו-App Engine HTTP, מגדירים תאריך יעד לניסיונות של משימות. אם המטפל בבקשה לא מגיב עד למועד האחרון הזה, הבקשה מבוטלת והניסיון מסומן כנכשל. Cloud Scheduler מנסה שוב להריץ את המשימה בהתאם להגדרת הניסיון החוזר.
כדי ליצור ולשמור את העבודה, לוחצים על יצירה.
העבודה תופעל עכשיו בתדירות שצוינה.
gcloud
כשיוצרים עבודה באמצעות ה-CLI של gcloud, משתמשים בפקודות שונות לכל סוג יעד:
HTTP
אפשר לשלוח בקשה לכל נקודת קצה של HTTP או HTTPS. נקודות קצה מטורגטות של HTTP צריכות להיות נגישות לכולם.
gcloud scheduler jobs create http JOB \ --location=LOCATION \ --schedule=SCHEDULE \ --uri=URI
מחליפים את מה שכתוב בשדות הבאים:
JOB: שם המשימה שחייב להיות ייחודי בפרויקט. שימו לב: אי אפשר להשתמש שוב בשם של משימה בפרויקט, גם אם מוחקים את המשימה המשויכת.
LOCATION: המיקום שבו תופעל המשימה.
SCHEDULE: התדירות או המרווח בין הפעלות של העבודה. לדוגמה:every 3 hours. המחרוזת שאתם מספקים כאן יכולה להיות כל מחרוזת שתואמת ל-unix-cron. אנחנו כבר לא ממליצים להשתמש בתחביר cron מדור קודם של App Engine, אבל הוא עדיין נתמך במשימות קיימות.מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.
URI: ה-URI המוגדר במלואו של נקודת הקצה שהעבודה תיצור איתה קשר.
פרמטרים אחרים מתוארים במדריך העזר לשורת הפקודה של gcloud:
אפשר גם לציין את שיטת ה-HTTP. ערך ברירת המחדל הוא
POST.אפשר גם לציין את הנתונים שיישלחו ליעד. הנתונים האלה נשלחים בגוף הבקשה כבייטים כשבוחרים בשיטת ה-HTTP
POSTאוPUT.אפשר להגדיר ערכי ניסיון חוזר, שמציינים איך המשימה של App Engine תנסה שוב במקרה של כשל. ברוב המקרים, הגדרות ברירת המחדל יספיקו.
כדי ליצור משימת HTTP Target שדורשת אימות, ראו שימוש באימות עם HTTP Target.
דוגמה
gcloud scheduler jobs create http my-http-job \ --schedule "0 1 * * 0" \ --uri "http://myproject/my-url.com" \ --http-method GET
Pub/Sub
חובה להשתמש בנושא Pub/Sub שכבר הגדרתם בפרויקט. Cloud Scheduler יפרסם הודעות בנושא הזה כחשבון שירות של Google API.
gcloud scheduler jobs create pubsub JOB \ --location=LOCATION \ --schedule=SCHEDULE \ --topic=TOPIC
מחליפים את מה שכתוב בשדות הבאים:
JOB: שם המשימה שחייב להיות ייחודי בפרויקט. שימו לב: אי אפשר להשתמש שוב בשם של משימה בפרויקט, גם אם מוחקים את המשימה המשויכת.
LOCATION: המיקום שבו תופעל המשימה.
SCHEDULE: התדירות או המרווח בין הפעלות של העבודה. לדוגמה:every 3 hours. המחרוזת שאתם מציינים כאן יכולה להיות כל מחרוזת שתואמת ל-unix-cron. אנחנו כבר לא ממליצים להשתמש בתחביר cron מדור קודם של App Engine, אבל הוא עדיין נתמך במשימות קיימות.מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.
TOPIC: השם של הנושא שהמשימה תפרסם בו. משתמשים בדגל--message-bodyאו--message-body-from-fileכדי לציין הודעה לשליחה לנושא. הערך הזה נשלח כפרמטרdataבהודעת Pub/Sub. דוגמה לכך מופיעה במדריך למתחילים.
פרמטרים אחרים מתוארים במדריך העזר לשורת הפקודה של gcloud.
דוגמה
gcloud scheduler jobs create pubsub myjob \ --schedule "0 1 * * 0" \ --topic cron-topic \ --message-body "Hello"
App Engine HTTP
יעד App Engine HTTP זמין רק לאפליקציית App Engine שמשויכת לפרויקט הנוכחי. אם רוצים להשתמש באפליקציית App Engine אחרת מחוץ לפרויקט הנוכחי, בוחרים באפשרות HTTP כיעד, ולא באפשרות App Engine HTTP. כללי חומת האש של היעד צריכים לאפשר בקשות מטווח כתובות ה-IP 0.1.0.2/32.
אפשר לאבטח נקודות קצה של App Engine באמצעות login: admin ברכיב handlers בקובץ app.yaml.
gcloud scheduler jobs create app-engine \ --JOB=JOB \ --location=LOCATION \ --schedule=SCHEDULE
מחליפים את מה שכתוב בשדות הבאים:
JOB: שם המשימה שחייב להיות ייחודי בפרויקט. שימו לב: אי אפשר להשתמש שוב בשם של משימה בפרויקט, גם אם מוחקים את המשימה המשויכת.
LOCATION: המיקום שבו תופעל המשימה. המיקום הזה צריך להיות זהה למיקום של אפליקציית App Engine.
SCHEDULE: התדירות או המרווח בין הפעלות של המשימה, למשלevery 3 hours. המחרוזת שאתם מציינים כאן יכולה להיות כל מחרוזת שתואמת ל-unix-cron. אנחנו כבר לא ממליצים להשתמש בתחביר cron מדור קודם של App Engine, אבל הוא עדיין נתמך במשימות קיימות.מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.
פרמטרים אחרים מתוארים במדריך העזר לשורת הפקודה של gcloud:
מציינים את כתובת ה-URL היחסית של נקודת הקצה (endpoint) ב-App Engine שאליה העבודה תיצור קשר. אם משתמשים בערך ברירת המחדל
/, העבודה תשתמש בערךPROJECT-ID.appspot.com, כאשרPROJECT-IDהוא מזהה הפרויקט הנוכחי.מציינים את השם של שירות App Engine שמריץ את ה-handler של משימת Cloud Scheduler. אם משמיטים את הארגומנט, הפונקציה פועלת בהנחה שמדובר בשירות
default. אם רוצים להגדיר את זה, אפשר למצוא את שמות השירותים במסוףGoogle Cloud .אפשר להגדיר את שיטת ה-HTTP שרוצים להשתמש בה כשהמשימה מופעלת. ערך ברירת המחדל הוא
POST.אפשר גם לציין את הגרסה. אם לא מגדירים את הערך, המערכת משתמשת בגרסה שמוצגת כרגע. אפשר לראות את הגרסאות הזמינות במסוףGoogle Cloud .
אפשר גם לציין את המופע. אם לא מגדירים את המדיניות, אפשר להשתמש בכל מופע זמין. אפשר לראות את הגרסאות הזמינות במסוףGoogle Cloud .
אפשר גם לציין את הנתונים שיישלחו ליעד. הנתונים האלה נשלחים בגוף הבקשה כבייטים כשבוחרים בשיטת ה-HTTP
POSTאוPUT.אפשר להגדיר ערכי ניסיון חוזר, שמציינים איך המשימה של App Engine תנסה שוב במקרה של כשל. ברוב המקרים, הגדרות ברירת המחדל מספיקות.
דוגמה
gcloud scheduler jobs create app-engine my-appengine-job \ --schedule "0 1 * * 0" \ --relative-url "/cron-handler"
עריכת משרה
אפשר לערוך את ההגדרה של עבודה.
המסוף
נכנסים לדף Cloud Scheduler במסוף Google Cloud .
בוחרים את המשרה שרוצים לערוך.
לוחצים על Edit.
פועלים לפי השלבים כדי להגדיר את לוח הזמנים, לקבוע את ההפעלה ולהגדיר הגדרות אופציונליות כשיוצרים משימה.
gcloud
כשעורכים משימה באמצעות ה-CLI של gcloud, משתמשים בפקודות שונות לכל סוג יעד:
HTTP
אפשר לשלוח בקשה לכל נקודת קצה של HTTP או HTTPS. נקודות קצה מטורגטות של HTTP צריכות להיות נגישות לכולם.
gcloud scheduler jobs update http JOB \ --location=LOCATION \ --schedule=SCHEDULE \ --uri=URI
מחליפים את מה שכתוב בשדות הבאים:
JOB: שם המשימה שחייב להיות ייחודי בפרויקט. שימו לב: אי אפשר להשתמש שוב בשם של משימה בפרויקט, גם אם מוחקים את המשימה המשויכת.
LOCATION: המיקום שבו המשימה פועלת. אם לא מציינים את המיקום, ה-CLI של gcloud ישתמש במיקום ברירת המחדל. אם המשרה שרוצים לערוך נמצאת במיקום אחר, צריך לציין את המיקום בנוסף ל-NAMEכדי שהמשרה תזוהה. אי אפשר לעדכן את מיקום העבודה.
SCHEDULE: התדירות או המרווח בין הפעלות של העבודה. לדוגמה:every 3 hours. המחרוזת שאתם מספקים כאן יכולה להיות כל מחרוזת שתואמת ל-unix-cron. אנחנו כבר לא ממליצים להשתמש בתחביר cron מדור קודם של App Engine, אבל הוא עדיין נתמך במשימות קיימות.מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.
URI: ה-URI המוגדר במלואו של נקודת הקצה שהעבודה תיצור איתה קשר.
פרמטרים אחרים מתוארים במדריך העזר לשורת הפקודה של gcloud.
דוגמה
gcloud scheduler jobs update http my-http-job \ --schedule "0 1 * * 0" \ --uri "http://myproject/my-url.com" \ --http-method GET
Pub/Sub
חובה להשתמש בנושא Pub/Sub שכבר הגדרתם בפרויקט. Cloud Scheduler יפרסם הודעות בנושא הזה כחשבון שירות של Google API.
gcloud scheduler jobs update pubsub JOB \ --location=LOCATION \ --schedule=SCHEDULE \ --topic=TOPIC
מחליפים את מה שכתוב בשדות הבאים:
JOB: שם המשימה שחייב להיות ייחודי בפרויקט. שימו לב: אי אפשר להשתמש שוב בשם של משימה בפרויקט, גם אם מוחקים את המשימה המשויכת.
LOCATION: המיקום שבו המשימה פועלת. אם לא מציינים את המיקום, ה-CLI של gcloud ישתמש במיקום ברירת המחדל. אם המשרה שרוצים לערוך נמצאת במיקום אחר, צריך לציין את המיקום בנוסף ל-NAMEכדי שהמשרה תזוהה. אי אפשר לעדכן את מיקום העבודה.
SCHEDULE: התדירות או המרווח בין הפעלות של המשימה, למשלevery 3 hours. המחרוזת שאתם מציינים כאן יכולה להיות כל מחרוזת שתואמת ל-unix-cron. אנחנו כבר לא ממליצים להשתמש בתחביר cron מדור קודם של App Engine, אבל הוא עדיין נתמך במשימות קיימות.מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.
TOPIC: השם של הנושא שהמשימה תפרסם בו. משתמשים בדגל--message-bodyאו--message-body-from-fileכדי לציין הודעה לשליחה לנושא. הערך הזה נשלח כפרמטרdataבהודעת Pub/Sub. דוגמה לכך מופיעה במדריך למתחילים.
פרמטרים אחרים מתוארים במדריך העזר לשורת הפקודה של gcloud.
דוגמה
gcloud scheduler jobs update pubsub myjob \ --schedule "0 1 * * 0" \ --topic cron-topic --message-body "Hello"
App Engine HTTP
יעד App Engine HTTP זמין רק לאפליקציית App Engine שמשויכת לפרויקט הנוכחי. אם רוצים להשתמש באפליקציית App Engine אחרת מחוץ לפרויקט הנוכחי, בוחרים באפשרות HTTP כיעד, ולא באפשרות App Engine HTTP.
אפשר לאבטח נקודות קצה של App Engine באמצעות login: admin ברכיב handlers בקובץ app.yaml.
gcloud scheduler jobs update app-engine JOB \ --location=LOCATION \ --schedule=SCHEDULE
מחליפים את מה שכתוב בשדות הבאים:
JOB: שם המשימה שחייב להיות ייחודי בפרויקט. שימו לב: אי אפשר להשתמש שוב בשם של משימה בפרויקט, גם אם מוחקים את המשימה המשויכת.
LOCATION: המיקום שבו העבודה מופעלת (זהה למיקום של אפליקציית App Engine שהוגדרה כיעד). אם לא מציינים את המיקום, ה-CLI של gcloud ישתמש במיקום ברירת המחדל. אם המשרה שרוצים לערוך נמצאת במיקום אחר, צריך לציין את המיקום בנוסף ל-NAMEכדי שהמשרה תזוהה. אי אפשר לעדכן את מיקום העבודה.
SCHEDULE: התדירות או המרווח בין הפעלות של המשימה, למשלevery 3 hours. המחרוזת שאתם מציינים כאן יכולה להיות כל מחרוזת שתואמת ל-unix-cron. אנחנו כבר לא ממליצים להשתמש בתחביר cron מדור קודם של App Engine, אבל הוא עדיין נתמך במשימות קיימות.מידע נוסף זמין במאמר בנושא הגדרת לוחות זמנים של משימות cron.
פרמטרים אחרים מתוארים במדריך העזר לשורת הפקודה של gcloud.
דוגמה
gcloud scheduler jobs update app-engine my-appengine-job \ --schedule "0 1 * * 0" \ --relative-url "/cron-handler"
השהיית משימה
אפשר להשהות את ההרצה של עבודה.
המסוף
נכנסים אל Cloud Scheduler במסוף Google Cloud .
בוחרים את העבודה שרוצים להשהות.
לוחצים על השהיה.
gcloud
פותחים חלון טרמינל במחשב שבו התקנתם את ה-CLI של gcloud.
מריצים את הפקודה:
gcloud scheduler jobs pause MY_JOBמחליפים את
MY_JOBבשם של העבודה שרוצים להשהות.
בזמן שהעבודה מושהית, אפשר גם לערוך אותה. אחרי עריכת המשרה, היא תישאר מושהית עד שתפעילו אותה מחדש.
המשך של עבודה
אפשר להמשיך את ההפעלה של עבודה שהושהתה.
המסוף
נכנסים אל Cloud Scheduler במסוף Google Cloud .
בוחרים את העבודה שרוצים להמשיך.
העבודה צריכה להיות כבר מושהית.
לוחצים על המשך.
gcloud
פותחים חלון טרמינל במחשב שבו התקנתם את ה-CLI של gcloud.
מריצים את הפקודה:
gcloud scheduler jobs resume MY_JOBמחליפים את
MY_JOBבשם של העבודה שרוצים להמשיך.
מחיקת משימה
אפשר למחוק משרה.
המסוף
נכנסים אל Cloud Scheduler במסוף Google Cloud .
בוחרים את המשרה שרוצים למחוק.
לוחצים על Delete.
gcloud
פותחים חלון טרמינל במחשב שבו התקנתם את ה-CLI של gcloud.
מריצים את הפקודה:
gcloud scheduler jobs delete MY_JOBמחליפים את
MY_JOBבשם של המשימה שרוצים למחוק.