תזמון והרצה של משימת 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 .
-
אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.
מפעילים את ממשקי ה-API של Cloud Scheduler ו-Pub/Sub:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים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 .
-
אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.
מפעילים את ממשקי ה-API של Cloud Scheduler ו-Pub/Sub:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים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 שרוצים למחוק.