תזמון והרצה של משימת cron באמצעות ה-CLI של gcloud

במדריך למתחילים הזה נסביר איך להשתמש ב-CLI של gcloud כדי לבצע כמה פעולות בסיסיות באמצעות Cloud Scheduler.

במדריך למתחילים הזה:

  1. יוצרים נושא Pub/Sub כדי להגדיר אותו כיעד של המשימה ב-Cloud Scheduler.
  2. יוצרים משימת cron באמצעות Cloud Scheduler ומגדירים לוח זמנים חוזר למשימה.
  3. מריצים את העבודה.
  4. מוודאים שהמשימה בוצעה בהצלחה.

ל-Cloud Scheduler יש תוכנית בחינם, והפעלת המדריך למתחילים לא אמורה להיות כרוכה בעלויות. מידע נוסף על תמחור

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. התקינו את ה-CLI של Google Cloud.

  3. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  4. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  5. יוצרים או בוחרים 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 .

  6. אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.

  7. מוודאים שהחיוב מופעל בפרויקט ב- Google Cloud .

  8. מפעילים את 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
  9. התקינו את ה-CLI של Google Cloud.

  10. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  11. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  12. יוצרים או בוחרים 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 .

  13. אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.

  14. מוודאים שהחיוב מופעל בפרויקט ב- Google Cloud .

  15. מפעילים את 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 הבאים בפרויקט:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

יצירת נושא ומינוי ב-Pub/Sub

נושא Pub/Sub הוא משאב שאפליקציות לשליחת הודעות יכולות לשלוח אליו הודעות. כדי לקבל הודעות שפורסמו בנושא מסוים, צריך ליצור מינוי לאותו נושא.

  1. מגדירים נושא Pub/Sub לשימוש כיעד למשימת ה-cron:

    gcloud pubsub topics create cron-topic
    

    כך נוצר נושא בשם cron-topic.

  2. כדי לקבל הודעות ולראות את תוצאות העבודה, צריך ליצור מינוי ל-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 מקבל הודעות מהמשימה.

  1. שליפת הודעות Pub/Sub ממינוי:

    gcloud pubsub subscriptions pull cron-sub --limit 5
    

    אם לא נמשכו הודעות בהתחלה, מריצים שוב את הפקודה.

  2. צפייה בתוצאות של הפעלת המשימה. הפלט אמור להיראות כך:

    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

אפשר גם למחוק את המשאבים שיצרתם במדריך למתחילים:

  1. מוחקים את משימת ה-cron. ב-Cloud Shell או במכונה שבה התקנתם את ה-CLI של gcloud, מריצים את הפקודה:

    gcloud scheduler jobs delete MY_JOB \
        --location="LOCATION"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫MY_JOB: השם של המשימה שרוצים למחוק.
    • ‫LOCATION: המיקום של המשימה. כברירת מחדל, המערכת משתמשת במיקום של אפליקציית App Engine של הפרויקט הנוכחי, אם יש אפליקציה משויכת.
  2. מוחקים את נושא Pub/Sub. ב-Cloud Shell או במחשב שבו התקנתם את ה-CLI של gcloud, מריצים את הפקודה:

    gcloud pubsub topics delete TOPIC_ID
    

    מחליפים את TOPIC_ID במזהה של נושא Pub/Sub שרוצים למחוק.

  3. מוחקים את המינוי ל-Pub/Sub. ב-Cloud Shell או במחשב שבו התקנתם את ה-CLI של gcloud, מריצים את הפקודה:

    gcloud pubsub subscriptions delete SUBSCRIPTION_ID
    

    מחליפים את SUBSCRIPTION_ID במזהה של המינוי ל-Pub/Sub שרוצים למחוק.

המאמרים הבאים