יצירת משימות ב-Cloud Tasks

אתם יכולים להשתמש ב-Cloud Tasks כדי ליצור פריטי עבודה אסינכרוניים שנקראים משימות. במאמר הזה נסביר איך ליצור משימות של יעד HTTP ומשימות של App Engine.

משימות של יעד HTTP הן בקשות שמועברות ל-worker שנמצא בכל נקודת קצה כללית של HTTP עם כתובת IP חיצונית, כמו Cloud Run, ‏ Google Kubernetes Engine, ‏ Compute Engine או שרת אינטרנט מקומי.

במקרה של יעדים ב-App Engine, ‏ Cloud Tasks מעביר בקשות למשימות ל-handler ב-App Engine. לכל התורים שמטרגטים מטפלים ב-App Engine צריך להיות אפליקציית App Engine. המטפלים צריכים לפעול באזור שבו פועלת אפליקציית App Engine. האזור הזה משמש גם כפרמטר REGION בבקשות שלכם ל-Cloud Tasks.

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

  • במסוף Google Cloud
  • באמצעות Google Cloud CLI בטרמינל או ב-Cloud Shell
  • שליחת בקשה ישירה ל-Cloud Tasks API

כדי ללמוד איך להוסיף משימה של HTTP Target לתור של Cloud Tasks באופן פרוגרמטי, אפשר לעיין במאמר יצירת משימות של HTTP Target באופן פרוגרמטי.

אפשר ליצור משימת App Engine בדרכים הבאות:

  • באמצעות Google Cloud CLI בטרמינל או ב-Cloud Shell
  • שליחת בקשה ישירה ל-Cloud Tasks API

כדי ללמוד איך להוסיף משימה של App Engine לתור של Cloud Tasks באופן פרוגרמטי, אפשר לעיין במאמר יצירת משימות של App Engine באופן פרוגרמטי.

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

מוודאים שכבר יצרתם תור של Cloud Tasks. מידע נוסף זמין במאמר בנושא יצירת תורים של Cloud Tasks.

יצירת משימת יעד HTTP

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

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

המסוף

  1. במסוף Google Cloud , נכנסים לדף Cloud Tasks > Queues.

    כניסה לדף Queues

  2. לוחצים על השם של התור שאליו רוצים להוסיף את המשימה.

  3. לוחצים על Create HTTP task (יצירת משימת HTTP).

  4. אם רוצים, מציינים את שם המשימה.

  5. בקטע URL, מציינים את כתובת ה-URL המוגדרת במלואה שהבקשה תישלח אליה. הנתיב חייב להתחיל ב-http:// או ב-https://. לדוגמה: https://www.example.com.

  6. אפשר לציין את ה-method של ה-HTTP שבה רוצים להשתמש לבקשה. ערך ברירת המחדל הוא POST.

  7. אופציונלי: בשדה גוף הבקשה, מציינים את נתוני גוף ה-HTTP שיישלחו לתהליך העובד שמבצע את המשימה.

  8. אם רוצים, לוחצים על הוספת כותרת כדי לציין כותרת או כותרות של בקשת HTTP.

  9. בקטע Auth header (כותרת אימות), בוחרים אחת מאפשרויות ההרשאה הבאות כדי לציין איך הבקשה שנשלחת ליעד מאומתת כשמבצעים את המשימה:

    • None (ללא) – ללא כותרת, לנקודות קצה ציבוריות ללא הרשאה
    • הוספת טוקן OAuth – בדרך כלל משמש ל-Google APIs שמתארחים ב-*.googleapis.com
    • Add OIDC token (הוספת אסימון OIDC) – משמש לקריאות של Google Cloud ושל נקודות קצה של צד שלישי, למעט Google APIs שמתארחים ב-*.googleapis.com
  10. אם רלוונטי, עבור חשבון שירות, מציינים את כתובת האימייל בחשבון שתשמש ליצירת אסימון ההרשאה שכלול בבקשה שנשלחת ליעד כשמבצעים את המשימה. חשבון השירות צריך להיות באותו פרויקט כמו התור. למבצע הקריאה החוזרת צריכה להיות ההרשאה iam.serviceAccounts.actAs בחשבון השירות.

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

  12. לוחצים על יצירה.

המשימה שלכם אמורה להופיע בדף פרטי התור.

gcloud

כדי ליצור משימת יעד HTTP ולהוסיף אותה לתור קיים, משתמשים בפקודה gcloud tasks create-http-task.

gcloud tasks create-http-task \
    --queue=QUEUE_ID \
    --url=URL \
    --location=REGION \
    --project=PROJECT_ID \
    --oidc-service-account-email=SERVICE_ACCOUNT_EMAIL

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

  • QUEUE_ID: השם של התור שאליו רוצים להוסיף את המשימה.
  • URL: כתובת ה-URL המלאה שאליה הבקשה תישלח. הנתיב חייב להתחיל ב-http:// או ב-https://. לדוגמה: https://www.example.com.

  • REGION: אופציונלי. האזור שבו התור נפרס, לדוגמה us-central1.

  • PROJECT_ID: אופציונלי. מזהה הפרויקט של פרויקטGoogle Cloud שבו המשימה תיווצר.

  • SERVICE_ACCOUNT_EMAIL: אופציונלי. כתובת האימייל בחשבון השירות שמשמשת ליצירת טוקן הרשאה שנכלל בבקשה שנשלחת ליעד כשמבצעים את המשימה. חשבון השירות צריך להיות באותו פרויקט כמו התור. למבצע הקריאה החוזרת צריכה להיות ההרשאה iam.serviceAccounts.actAs בחשבון השירות.

    כדי ליצור אסימון גישה מסוג OAuth2 במקום אסימון OpenID Connect, מחליפים את הדגל --oidc-service-account-email בדגל --oauth-service-account-email כדי לציין את כתובת האימייל בחשבון השירות.

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

REST

כדי ליצור משימת יעד HTTP ולהוסיף אותה לתור קיים, משתמשים ב-method‏ projects.locations.queues.tasks.create.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: חובה. מזהה הפרויקט של Google Cloud הפרויקט שבו תיווצר המשימה.
  • REGION: חובה. האזור שבו התור נפרס – לדוגמה, us-central1.
  • QUEUE_ID: חובה. המזהה של התור שאליו תתווסף המשימה.
  • URL: חובה. כתובת ה-URL המוגדרת במלואה שאליה תישלח הבקשה. המחרוזת הזו חייבת להתחיל ב-http:// או ב-https://, למשל: https://www.example.com.
  • SERVICE_ACCOUNT_EMAIL: אופציונלי. כתובת האימייל בחשבון השירות ששימשה ליצירת טוקן הרשאה שנכלל בבקשה שנשלחת ליעד כשמבצעים את המשימה. חשבון השירות חייב להיות באותו פרויקט כמו התור. למבצע הקריאה צריכה להיות ההרשאה iam.serviceAccounts.actAs בחשבון השירות.

    כדי ליצור טוקן גישה מסוג OAuth2 במקום אסימון OpenID Connect, מחליפים את השדה oidcToken ב-oauthToken כדי לציין את כתובת האימייל בחשבון השירות.

  • SCHEDULE_TIME: אופציונלי. השעה שבה המשימה מתוזמנת לניסיון, בפורמט RFC 3339 – לדוגמה, 2026-10-02T15:01:23Z. אם השעה לא מוגדרת או שהיא כבר עברה, Cloud Tasks יגדיר אותה לשעה הנוכחית.

תוכן בקשת JSON:

{
  "task": {
    "httpRequest": {
      "url": "URL",
      "httpMethod": "POST",
      "oidcToken": {
        "serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL"
      }
    },
    "scheduleTime": "SCHEDULE_TIME"
  }
}

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

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל את המופע החדש של משאב Task.

{
  "name": "projects/PROJECT_ID/locations/REGION/queues/QUEUE_ID/tasks/TASK_ID",
  "httpRequest": {
    "url": "URL",
    "httpMethod": "POST",
    "headers": {
      "User-Agent": "Google-Cloud-Tasks"
    },
    "oidcToken": {
      "serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL",
      "audience": "URL"
    }
  },
  "scheduleTime": "SCHEDULE_TIME",
  "createTime": "2026-04-30T19:11:50Z",
  "dispatchDeadline": "600s",
  "view": "BASIC"
}

יצירת משימה ב-App Engine

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

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

gcloud

כדי ליצור משימה ב-App Engine ולהוסיף אותה לתור קיים, משתמשים בפקודה gcloud tasks create-app-engine-task.

gcloud tasks create-app-engine-task \
    --queue=QUEUE_ID \
    --relative-uri=RELATIVE_URI \
    --location=REGION \
    --project=PROJECT_ID \
    --routing=KEY:VALUE

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

  • QUEUE_ID: השם של התור שאליו רוצים להוסיף את המשימה.
  • RELATIVE_URI: ה-URI היחסי של הבקשה. הנתיב חייב להתחיל בקו נטוי (/). אם לא מציינים נתיב, נעשה שימוש בנתיב הבסיס (/).
  • REGION: אופציונלי. האזור שבו התור נפרס. אם לא מציינים מיקום, המערכת משתמשת במיקום של אפליקציית App Engine של הפרויקט הנוכחי.
  • PROJECT_ID: אופציונלי. מזהה הפרויקט של פרויקטGoogle Cloud שבו המשימה תיווצר.
  • KEY:VALUE: אופציונלי. הנתיב שבו יש להשתמש למשימה הזו, כאשר KEY הוא לפחות אחד מהערכים הבאים: service, ‏ version או instance. אם חסרים מפתחות, המערכת תשתמש בניתוב ברירת המחדל.

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

REST

כדי ליצור משימה ב-App Engine ולהוסיף אותה לתור קיים, משתמשים ב-method‏ projects.locations.queues.tasks.create.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: חובה. מזהה הפרויקט של Google Cloud הפרויקט שבו תיווצר המשימה.
  • REGION: חובה. האזור שבו התור נפרס.
  • QUEUE_ID: חובה. המזהה של התור שאליו תתווסף המשימה.
  • RELATIVE_URI: חובה. ה-URI היחסי של הבקשה. הנתיב חייב להתחיל בקו נטוי (/). אם לא מציינים נתיב, המערכת משתמשת בנתיב הבסיס (/).
  • SERVICE: אופציונלי. שירות App Engine שיעבד את המשימה. כברירת מחדל, המשימה נשלחת לשירות שמוגדר כברירת מחדל כשמנסים לבצע את המשימה.
  • VERSION: אופציונלי. גרסת App Engine שתעבד את המשימה. כברירת מחדל, המשימה נשלחת לגרסה שהוגדרה כגרסת ברירת המחדל כשמנסים לבצע את המשימה.
  • SCHEDULE_TIME: אופציונלי. השעה שבה המשימה מתוזמנת לניסיון, בפורמט RFC 3339 – לדוגמה, 2026-10-02T15:01:23Z. אם השעה לא מוגדרת או שהיא כבר עברה, Cloud Tasks יגדיר אותה לשעה הנוכחית.

תוכן בקשת JSON:

{
  "task": {
    "appEngineHttpRequest": {
      "httpMethod": "POST",
      "relativeUri": "RELATIVE_URI",
      "appEngineRouting": {
        "service": "SERVICE",
        "version": "VERSION"
      }
    },
    "scheduleTime": "SCHEDULE_TIME"
  }
}

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

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל את המופע החדש של משאב Task.

{
  "name": "projects/PROJECT_ID/locations/REGION/queues/QUEUE_ID/tasks/TASK_ID",
  "appEngineHttpRequest": {
    "httpMethod": "POST",
    "relativeUri": "RELATIVE_URI",
    "appEngineRouting": {
      "service": "SERVICE",
      "version": "VERSION",
      "host": "VERSION.SERVICE.PROJECT_ID.appspot.com"
    }
  },
  "scheduleTime": "SCHEDULE_TIME",
  "createTime": "2026-04-30T19:11:50Z",
  "dispatchDeadline": "600s",
  "view": "BASIC"
}

יצירת קבוצה של משימות

אתם יכולים ליצור קבוצה של משימות יעד ולהוסיף אותה לתור קיים באמצעות ה-method‏ projects.locations.queues.tasks.batchCreate כדי ליצור רשימה של בקשות.

שימו לב לנקודות הבאות:

  • כל המשימות צריכות להתווסף לאותו תור.

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

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

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

משימות HTTP

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: חובה. מזהה הפרויקט ב- Google Cloud שבו ייווצרו המשימות.
  • REGION: חובה. האזור שבו התור נפרס – לדוגמה, us-central1.
  • QUEUE_ID: חובה. המזהה של התור שאליו יתווספו המשימות.
  • URL: חובה. כתובת ה-URL המוגדרת במלואה שאליה תישלח הבקשה. המחרוזת הזו חייבת להתחיל ב-http:// או ב-https://, למשל: https://www.example.com.
  • SERVICE_ACCOUNT_EMAIL: אופציונלי. כתובת האימייל בחשבון השירות ששימשה ליצירת טוקן הרשאה שנכלל בבקשה שנשלחת ליעד כשמבצעים את המשימה. חשבון השירות חייב להיות באותו פרויקט כמו התור. למבצע הקריאה צריכה להיות ההרשאה iam.serviceAccounts.actAs בחשבון השירות.

    כדי ליצור טוקן גישה מסוג OAuth2 במקום אסימון OpenID Connect, מחליפים את השדה oidcToken ב-oauthToken כדי לציין את כתובת האימייל בחשבון השירות.

גוף הבקשה מכיל רשימה של בקשות.

תוכן בקשת JSON:

{
  "requests": [
    {
      "task": {
        "httpRequest": {
          "url": "URL",
          "httpMethod": "POST",
          "oidcToken": {
            "serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL"
          }
        },
        "scheduleTime": "SCHEDULE_TIME"
      }
    }
  ]
}

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

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של משאב Operation.

{
  "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.tasks.v2beta3.BatchCreateTasksMetadata"
  },
  "done": false
}

משימות ב-App Engine

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: חובה. מזהה הפרויקט של Google Cloud הפרויקט שבו תיווצר המשימה.
  • REGION: חובה. האזור שבו התור נפרס.
  • QUEUE_ID: חובה. המזהה של התור שאליו יתווספו המשימות.
  • RELATIVE_URI: חובה. ה-URI היחסי של הבקשה. הנתיב חייב להתחיל בקו נטוי (/). אם לא מציינים נתיב, המערכת משתמשת בנתיב הבסיס (/).
  • SERVICE: אופציונלי. שירות App Engine שיעבד את המשימה. כברירת מחדל, המשימה נשלחת לשירות שמוגדר כברירת מחדל כשמנסים לבצע את המשימה.
  • VERSION: אופציונלי. גרסת App Engine שתעבד את המשימה. כברירת מחדל, המשימה נשלחת לגרסה שהוגדרה כגרסת ברירת המחדל כשמנסים לבצע את המשימה.
  • SCHEDULE_TIME: אופציונלי. השעה שבה המשימה מתוזמנת לניסיון, בפורמט RFC 3339 – לדוגמה, 2026-10-02T15:01:23Z. אם השעה לא מוגדרת או שהיא כבר עברה, Cloud Tasks יגדיר אותה לשעה הנוכחית.

גוף הבקשה מכיל רשימה של בקשות.

תוכן בקשת JSON:

{
  "requests": [
    {
      "task": {
        "appEngineHttpRequest": {
          "httpMethod": "POST",
          "relativeUri": "RELATIVE_URI",
          "appEngineRouting": {
            "service": "SERVICE",
            "version": "VERSION"
          }
        },
        "scheduleTime": "SCHEDULE_TIME"
      }
    }
  ]
}

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

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של משאב Operation.

{
  "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.tasks.v2beta3.BatchCreateTasksMetadata"
  },
  "done": false
}

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