תזמון והרצה של משימת cron באמצעות ה-CLI של gcloud
במדריך למתחילים הזה נסביר איך להשתמש ב-CLI של gcloud כדי לבצע כמה פעולות בסיסיות באמצעות Cloud Scheduler.
במדריך למתחילים הזה:
- יוצרים נושא Pub/Sub כדי להגדיר אותו כיעד של המשימה ב-Cloud Scheduler.
- יוצרים משימת cron באמצעות Cloud Scheduler ומגדירים לוח זמנים חוזר למשימה.
- מריצים את העבודה.
- מוודאים שהמשימה בוצעה בהצלחה.
ל-Cloud Scheduler יש תוכנית בחינם, והפעלת המדריך למתחילים לא אמורה להיות כרוכה בעלויות. מידע נוסף על תמחור
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
התקינו את ה-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 .
-
אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.
מפעילים את Cloud Scheduler ו-Pub/Sub APIs, אם הם עדיין לא מופעלים:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable cloudscheduler.googleapis.com
pubsub.googleapis.com -
התקינו את ה-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 .
-
אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.
מפעילים את Cloud Scheduler ו-Pub/Sub APIs, אם הם עדיין לא מופעלים:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידיםgcloud services enable cloudscheduler.googleapis.com
pubsub.googleapis.com
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לביצוע ההפעלה המהירה הזו, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- אדמין ב-Cloud Scheduler (
roles/cloudscheduler.admin) - עורך Pub/Sub (
roles/pubsub.editor)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
יצירת נושא ומינוי ב-Pub/Sub
נושא Pub/Sub הוא משאב שאפליקציות לשליחת הודעות יכולות לשלוח אליו הודעות. כדי לקבל הודעות שפורסמו בנושא מסוים, צריך ליצור מינוי לאותו נושא.
מגדירים נושא Pub/Sub לשימוש כיעד למשימת ה-cron:
gcloud pubsub topics create cron-topicכך נוצר נושא בשם
cron-topic.כדי לקבל הודעות ולראות את תוצאות העבודה, צריך ליצור מינוי ל-Pub/Sub:
gcloud pubsub subscriptions create cron-sub --topic cron-topic
יצירת משימת cron באמצעות Cloud Scheduler
משתמשים בפקודה gcloud scheduler jobs create pubsub כדי להגדיר יחידת עבודה שנקראת משימת Cron, שנשלחת ליעד Pub/Sub בלוח זמנים חוזר. לוח הזמנים מוגדר בפורמט שמבוסס על unix-cron. מידע נוסף זמין במאמר בנושא פורמט של משימת Cron ואזור זמן.
gcloud scheduler jobs create pubsub my-cron-job \
--schedule="30 16 * * 7" \
--topic=cron-topic \
--location="us-east1" \
--message-body="Hello world"
יצרתם עבודה ששולחת את ההודעה 'Hello world' לנושא Pub/Sub בשעה 16:30 בימי ראשון.
עכשיו אפשר להריץ את העבודה.
הרצת המשימה
בנוסף להרצה בהתאם ללוח הזמנים שצוין, אפשר להריץ את הג'וב באופן מיידי:
gcloud scheduler jobs run my-cron-job --location="us-east1"
שימו לב: בגלל הגדרה ראשונית מסוימת, יכול להיות שיעברו כמה דקות עד שהעבודה הראשונה שנוצרה בפרויקט תפעל.
אחר כך תוכלו לוודא שההודעה התקבלה בנושא ה-Pub/Sub.
אימות התוצאות ב-Pub/Sub
מוודאים שהנושא ב-Pub/Sub מקבל הודעות מהמשימה.
שליפת הודעות Pub/Sub ממינוי:
gcloud pubsub subscriptions pull cron-sub --limit 5אם לא נמשכו הודעות בהתחלה, מריצים שוב את הפקודה.
צפייה בתוצאות של הפעלת המשימה. הפלט אמור להיראות כך:
DATA: Hello world! MESSAGE_ID: 5028933846601543 ORDERING_KEY: ATTRIBUTES: DELIVERY_ATTEMPT: ACK_ID: RFAGFixdRkhRNxkIaFEOT14jPzUgKEUQAgVPAihdeTFXLkFacGhRDRlyfWB9[...]
הסרת המשאבים
כדי לא לצבור חיובים בחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, אתם צריכים למחוק את הפרויקט Google Cloud יחד עם המשאבים.
כדי למחוק Google Cloud פרויקט:
gcloud projects delete PROJECT_ID
אפשר גם למחוק את המשאבים שיצרתם במדריך למתחילים:
מוחקים את משימת ה-cron. ב-Cloud Shell או במכונה שבה התקנתם את ה-CLI של gcloud, מריצים את הפקודה:
gcloud scheduler jobs delete MY_JOB \ --location="LOCATION"מחליפים את מה שכתוב בשדות הבאים:
-
MY_JOB: השם של המשימה שרוצים למחוק. -
LOCATION: המיקום של המשימה. כברירת מחדל, המערכת משתמשת במיקום של אפליקציית App Engine של הפרויקט הנוכחי, אם יש אפליקציה משויכת.
-
מוחקים את נושא Pub/Sub. ב-Cloud Shell או במחשב שבו התקנתם את ה-CLI של gcloud, מריצים את הפקודה:
gcloud pubsub topics delete TOPIC_IDמחליפים את
TOPIC_IDבמזהה של נושא Pub/Sub שרוצים למחוק.מוחקים את המינוי ל-Pub/Sub. ב-Cloud Shell או במחשב שבו התקנתם את ה-CLI של gcloud, מריצים את הפקודה:
gcloud pubsub subscriptions delete SUBSCRIPTION_IDמחליפים את
SUBSCRIPTION_IDבמזהה של המינוי ל-Pub/Sub שרוצים למחוק.