הפעלת משימות

בדף הזה מוסבר איך להריץ משימות של Cloud Run. כשמריצים משימה, נוצר ביצוע משימה שבו כל המשימות צריכות לפעול עד הסוף בהצלחה כדי שביצוע המשימה יצליח. הפעלות של משימות כותבות יומנים ל-Cloud Logging ושולחות נתוני מעקב ל-Cloud Monitoring.

בנוסף לתכונות הרישום האלה, אפשר גם לראות את פרטי ההרצה של המשימות בחלונית פרטי ההרצה,לצד הרצות שהתרחשו ב-7 הימים האחרונים. בחלונית מוצגים פרטים על 1, 000 ההרצות האחרונות של משימה. פרטי הביצוע הישנים מוסרים ולא מוצגים יותר בחלונית פרטי הביצוע. עם זאת, יומני הרישום ונתוני המעקב של הרצות ישנות יותר עדיין זמינים ב-Cloud Logging וב-Cloud Monitoring, בכפוף למדיניות שמירת הנתונים של המוצרים האלה.

מהי הרצת משימה?

הפעלה של משימת Cloud Run פירושה יצירה והרצה של עומס עבודה מוגדר עד לסיום, מחולק למשימה אחת או יותר במקביל או ברצף, בלי להאזין לבקשות HTTP או להציג אותן.

אלה הישויות המרכזיות של משרה:

  • Job: הגדרה סטטית וקבועה. הוא מגדיר את קובץ האימג' של הקונטיינר, הקצאות המשאבים (CPU, זיכרון, GPU), משתני הסביבה ופרמטרי הביצוע (מספר המשימות הכולל, מקביליות, פסק זמן וניסיונות חוזרים).

  • הפעלה: אירוע מחזור חיים זמני שנוצר כשמפעילים משימה. 'ביצוע' מייצג את אובייקט המעקב הכולל של הרצה יחידה של העבודה.

  • משימה: מופע יחיד של הקונטיינר המוגדר שפועל. הפעלה מורכבת ממשימה אחת או יותר (taskCount).

יש שתי דרכים שונות באופן מהותי להפעלת עבודה:

  • כעבודה רגילה.

    כשמריצים משימה כמשימה רגילה (ברירת המחדל), ההרצה מתחילה בהקדם האפשרי.

  • בתור משימה מושהית.

    כשמריצים משימה כמשימה מושהית, אתם מסכימים לדחות משימות לא דחופות למשך 12 שעות לכל היותר, בתמורה למחיר טוב יותר.

כל עבודה היא רגילה או מושהית, אבל אפשר לשנות את ההגדרות האלה להרצה של עבודה אחת, כך שעבודה רגילה תורץ כעבודה מושהית, או שעבודה מושהית תורץ כעבודה רגילה. פרטים נוספים מופיעים במאמר בנושא עיכוב ההפעלה של משימה.

בטבלה הבאה מוצגת תצוגה מפורטת יותר של תרחישי הביצוע האפשריים של מופע נתון של משימה:

שיטת הביצוע פקודה / טריגר תזמון הקצאת משאבים רמת עלות השהיה מקסימלית / זמן קצוב לתפוגה תרחיש שימוש אופייני
Standard (On-Demand) gcloud run jobs execute התחלה מיידית / בהקדם האפשרי תעריפים רגילים למשרות התחלה מיידית; זמן ריצה מקסימלי של 7 ימים עיבוד נתונים אד-הוק, טריגרים ידניים, צינורות עיבוד נתונים מבוססי-אירועים
יצירה/עדכון והפעלה gcloud run jobs create/update --execute-now ההקלטה מתחילה מיד עם היצירה תעריפים רגילים למשימות התחלה מיידית; זמן ריצה מקסימלי של 7 ימים פריסות CI/CD, העברות סכימה, חימום אחרי פריסה
ביצוע מושהה gcloud beta run jobs execute --delay-execution ההפעלה מתחילה בחלון שעבר אופטימיזציה על ידי המערכת תעריף מוזל עיכוב של עד 12 שעות לפני ביטול אוטומטי, פסק זמן של עד 12 שעות עבודות אצווה לא דחופות, ניתוח נתונים בלילה, הסקת מסקנות מ-AI בכמות גדולה
הרצה עם שינויים מברירת המחדל gcloud run jobs execute --args=... --tasks=... התחלה מיידית / בהקדם האפשרי תעריפים רגילים למשימות התחלה מיידית; פסק זמן שהוחלף מילוי חוסרים (backfill) ספציפי למחיצה, גודל חבילה דינמי, הפעלות ניפוי באגים

התפקידים הנדרשים

כדי לקבל את ההרשאות שנדרשות לפעולות שמתוארות בדף הזה, צריך לבקש מהאדמין להקצות לכם אחד מתפקידי ה-IAM הבאים בעבודת Cloud Run:

  • כדי להפעיל משימות באמצעות Google Cloud CLI: Cloud Run Invoker ‏ (roles/run.invoker) במשימה ב-Cloud Run
  • כדי להריץ משימות באמצעות Google Cloud המסוף, כדי לשנות את ההגדרות של המשימות או כדי לבטל את ההרצה של המשימות: Cloud Run Developer (roles/run.developer) במשימה ב-Cloud Run

רשימת ההרשאות והתפקידים ב-IAM שמשויכים ל-Cloud Run מופיעה במאמרים תפקידי IAM ב-Cloud Run והרשאות IAM ב-Cloud Run. אם עבודת Cloud Run שלכם מתקשרת עםGoogle Cloud ממשקי API, כמו ספריות לקוח ב-Cloud, כדאי לעיין במדריך להגדרת זהות שירות. מידע נוסף על מתן תפקידים זמין במאמרים הרשאות פריסה וניהול גישה.

הפעלת משימות

אפשר להריץ עבודות באמצעות מסוף Google Cloud , ה-CLI של gcloud, ספריות לקוח או API בארכיטקטורת REST.

המסוף

כדי להריץ עבודה:

  1. נכנסים לדף Jobs ב-Cloud Run במסוף Google Cloud :

    כניסה לדף Cloud Run jobs

  2. מאתרים את המשרה שמעניינת אתכם.

  3. לוחצים על המשרה כדי להציג את דף פרטי המשרה.

  4. לוחצים על Execute.

gcloud

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

gcloud run jobs execute JOB

אם רוצים שהפקודה תחכה עד שהביצוע יסתיים, מריצים את הפקודה הבאה:

gcloud run jobs execute JOB --wait --region=REGION

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

gcloud beta run jobs execute JOB --tail --region=REGION

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

  • JOB: השם של המשימה ב-Cloud Run.
  • REGION: האזור שבו אפשר למצוא את המשאב. לדוגמה, europe-west1. אפשר גם להגדיר את המאפיין run/region.

ספריות לקוח

כדי להריץ משימה קיימת מקוד:

‫API בארכיטקטורת REST

כדי להריץ משימה קיימת, שולחים בקשת HTTP‏ POST אל ה-method‏ jobs.run של ה-API.

לדוגמה, שימוש ב-curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB:run

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

  • ACCESS_TOKEN: אסימון גישה תקין לחשבון שיש לו הרשאות IAM להפעלת עבודה. לדוגמה, אם אתם מחוברים ל-gcloud, אתם יכולים לאחזר אסימון גישה באמצעות gcloud auth print-access-token. מתוך מופע קונטיינר של Cloud Run, אפשר לאחזר אסימון גישה באמצעות שרת המטא-נתונים של מופע הקונטיינר.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • REGION: Google Cloud האזור של המשימה.
  • JOB: השם של המשימה ב-Cloud Run.

הפעלת עבודות באופן מיידי

המסוף

כדי להריץ עבודה באופן מיידי:

  1. במסוף Google Cloud , נכנסים לדף Cloud Run:

    כניסה ל-Cloud Run

  2. בתפריט הניווט של Cloud Run, לוחצים על Jobs (משימות):

    1. אם יוצרים משימה חדשה, לוחצים על Deploy container (פריסת מאגר תגים) כדי למלא את דף ההגדרות הראשוני של המשימה.

    2. אם אתם מגדירים משימה קיימת, בוחרים את המשימה ולוחצים על View and edit job configuration (הצגה ועריכה של הגדרת המשימה).

  3. עוברים לתחתית הדף ומסמנים את התיבה הפעלת המשימה באופן מיידי לפני שיוצרים או מעדכנים את המשימה.

gcloud

אפשר לציין את הדגל --execute-now כשיוצרים או מעדכנים משימה.

  • כדי ליצור משימה, מריצים את הפקודה הבאה:

    gcloud run jobs create JOB \
      --image IMAGE_URL \
      --execute-now \
      --region=REGION
  • כדי לעדכן משימה, מריצים את הפקודה הבאה:

    gcloud run jobs update JOB --execute-now --region=REGION

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

  • JOB: השם של המשימה ב-Cloud Run.
  • IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה us-docker.pkg.dev/cloudrun/container/job:latest.
  • REGION: האזור שבו אפשר למצוא את המשאב. לדוגמה, europe-west1.

YAML

אפשר לשמור את מפרט העבודה בקובץ YAML ואז לפרוס אותו באמצעות ה-CLI של gcloud.

  1. אם אתם יוצרים משרה חדשה, דלגו על השלב הזה. אם אתם מעדכנים משימה קיימת, אתם צריכים להוריד את הגדרת ה-YAML שלה:

    gcloud run jobs describe JOB --format export > job.yaml
  2. מגדירים את המאפיין startExecutionToken כמו שמוצג:

    apiVersion: run.googleapis.com/v2
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE_URL
      startExecutionToken: START_EXECUTION_SUFFIX

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

    • JOB: השם של המשימה ב-Cloud Run.
    • IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה us-docker.pkg.dev/cloudrun/container/job:latest.
    • START_EXECUTION_SUFFIX: מחרוזת ייחודית שמשמשת כסיומת ליצירת הרצה חדשה. העבודה תהיה מוכנה כשההפעלה תתחיל בהצלחה. האורך הכולל של שם המשימה והאסימון צריך להיות קצר מ-63 תווים.

    אפשר גם לציין הגדרות נוספות, כמו משתני סביבה או מגבלות זיכרון.

  3. יוצרים או מעדכנים את העבודה באמצעות הפקודה הבאה:

    gcloud run jobs replace job.yaml

    אם קיים קובץ job.yaml, הפקודה gcloud run jobs replace משתמשת בו כברירת מחדל.

Terraform

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

מוסיפים את השורות הבאות למשאב google_cloud_run_v2_job בתצורת Terraform:
resource "google_cloud_run_v2_job" "default" {
   name     = "cloudrun-job"
   location = "REGION"
   deletion_protection = false
   start_execution_token = "START_EXECUTION_SUFFIX"
   template {
      template {
         containers {
         image = "us-docker.pkg.dev/cloudrun/container/job"
         }
      }
   }
}

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

  • REGION: Google Cloud האזור. לדוגמה, europe-west1.
  • START_EXECUTION_SUFFIX: מחרוזת ייחודית שמשמשת כסיומת ליצירת הרצה חדשה. הסטטוס של המשימה ישתנה ל'מוכנה' כשההפעלה תתחיל בהצלחה. האורך הכולל של שם המשרה והאסימון צריך להיות פחות מ-63 תווים.

ספריות לקוח

כדי להריץ עבודה באופן מיידי מקוד באמצעות ספריות לקוח של Cloud:

‫API בארכיטקטורת REST

כדי להריץ משימות מיד אחרי היצירה שלהן, שולחים בקשת HTTP POST לנקודת הקצה jobs של Cloud Run Admin API.

לדוגמה, באמצעות curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '{
     "template": {
        "template": {
           "containers":
              {
                 "image": "IMAGE_URL"
              }
        }
     },
     "startExecutionToken": "START_EXECUTION_SUFFIX"
  }' \
  "https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs?jobId=JOB"

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

  • ACCESS_TOKEN: אסימון גישה תקף לחשבון שיש לו הרשאות IAM ליצירת משימות. לדוגמה, אם אתם מחוברים ל-gcloud, אתם יכולים לאחזר אסימון גישה באמצעות gcloud auth print-access-token. מתוך מופע קונטיינר של Cloud Run, אפשר לאחזר אסימון גישה באמצעות שרת המטא-נתונים של מופע הקונטיינר.
  • IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה us-docker.pkg.dev/cloudrun/container/job:latest.
  • START_EXECUTION_SUFFIX: מחרוזת ייחודית שמשמשת כסיומת ליצירת הרצה חדשה. העבודה תהיה מוכנה כשההפעלה תתחיל בהצלחה. האורך הכולל של שם המשרה והאסימון צריך להיות קצר מ-63 תווים.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • REGION: Google Cloud האזור של המשימה.
  • JOB: השם של המשימה ב-Cloud Run.

השהיית ההרצה

כדי להשבית את ההפעלה המיידית או להמיר את המשימה הרגילה למשימה מושהית, אפשר לעיין במאמר בנושא השהיית ההפעלה של משימה.

שינוי הגדרות של משימה להרצה ספציפית

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

דוגמאות לתרחישי שימוש נפוצים:

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

אפשר לשנות את הגדרות העבודה של הרצה באמצעות מסוף Google Cloud , ה-CLI של gcloud, ספריות לקוח או ה-API בארכיטקטורת REST:

המסוף

  1. במסוף Google Cloud , נכנסים לדף Cloud Run jobs:

    כניסה לדף Cloud Run jobs

  2. לוחצים על המשרה כדי לפתוח את חלונית פרטי המשרה.

  3. לוחצים על חץ ההרחבה שלצד הלחצן עריכה ואז על הפעלה עם הגדרות ברירת מחדל כדי להציג את הטופס הפעלת משימה עם הגדרות ברירת מחדל.

  4. מגדירים את הארגומנטים, משתני הסביבה, מספר המשימות והגדרת הזמן הקצוב לתפוגה של המשימה להרצה הזו, ואז לוחצים על Execute (הרצה).

gcloud

משתמשים בפקודה:

gcloud run jobs execute JOB \
     --args ARGS \
     --update-env-vars KEY=VALUE,KEY_N=VALUE_N \
     --tasks TASKS \
     --task-timeout TIMEOUT

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

ספריות לקוח

כדי להריץ משימה קיימת מקוד, תוך ביטול ההגדרה של המשימה:

‫API בארכיטקטורת REST

כדי לשנות את הגדרות המשימה של משימה קיימת, שולחים בקשת HTTP POST לנקודת הקצה jobs של Cloud Run Admin API

לדוגמה, שימוש ב-curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '{"overrides": {"containerOverrides": [{"args": ["ARGS"], "env": [{"name": "KEY", "value": "VALUE"}]}], "taskCount": TASKS, "timeout": "TIMEOUT" }}' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB:run

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

ביטול ההרצה של משימה

כדי להפסיק הפעלה של משימת Cloud Run שפועלת כרגע, משתמשים בתכונה cancel. ביטול של הרצת עבודה מפסיק את הרצת העבודה הנוכחית. לביצועים שבוטלו יש סטטוס בוטל. עדיין תוכלו לראות את ההפעלה, כולל נתוני ההגדרה, היומנים ונתוני המעקב שלה.

ביטול של הרצת משימה לא מבטל את החיובים על השימוש במשימות של Cloud Run בזמן שהמשימה רצה.

כדי לבטל הרצה, משתמשים במסוף Google Cloud , ב-CLI של gcloud, בספריות לקוח או ב-API בארכיטקטורת REST:

המסוף

  1. במסוף Google Cloud , נכנסים לדף Cloud Run jobs:

    כניסה לדף Cloud Run jobs

  2. לוחצים על המשרה כדי לפתוח את חלונית פרטי המשרה.

  3. בוחרים את ההרצה של העבודה שרוצים לבטל.

  4. בתפריט פעולות, לוחצים על סמל האליפסה ואז על ביטול.

gcloud

משתמשים בפקודה:

gcloud run jobs executions cancel EXECUTION_NAME

מחליפים את EXECUTION_NAME בשם ההפעלה.

הפקודה הזו דורשת אישור, לכן צריך להזין y כדי לאשר.

ספריות לקוח

כדי לבטל הפעלה של משימה מקוד:

‫API בארכיטקטורת REST

כדי לבטל הפעלה של משימה, שולחים בקשת POST HTTP לנקודת הקצה של Cloud Run Admin API jobs

לדוגמה, שימוש ב-curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X POST \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB/executions/EXECUTION_NAME:cancel

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

  • ACCESS_TOKEN: אסימון גישה תקף לחשבון שיש לו הרשאות IAM לביטול של הפעלות של משימות. לדוגמה, אם אתם מחוברים ל-gcloud, אתם יכולים לאחזר אסימון גישה באמצעות gcloud auth print-access-token. מתוך מופע קונטיינר של Cloud Run, אפשר לאחזר אסימון גישה באמצעות שרת המטא-נתונים של מופע הקונטיינר.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • REGION: Google Cloud האזור של המשימה.
  • JOB: השם של המשימה ב-Cloud Run.
  • EXECUTION_NAME: השם של הפעלת המשימה.

מחיקת הרצת משימה

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

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

אחרי שמריצים את העבודה, אפשר לפעול לפי השלבים הבאים: