תזמון והרצה של משימת 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. מפעילים את ממשקי ה-API של Cloud Scheduler ו-Pub/Sub:

    תפקידים שנדרשים להפעלת ממשקי 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. מפעילים את ממשקי ה-API של Cloud Scheduler ו-Pub/Sub:

    תפקידים שנדרשים להפעלת ממשקי 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 שרוצים למחוק.

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