הפסקת צינור עיבוד נתונים פעיל של Dataflow

כדי להפסיק עבודת Dataflow, אפשר להשתמש במסוףGoogle Cloud , ב-Cloud Shell, בטרמינל מקומי שמותקן בו Google Cloud CLI או ב-Dataflow API בארכיטקטורת REST.

אפשר להפסיק משימת Dataflow באחת משלוש הדרכים הבאות:

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

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

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

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

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

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

אי אפשר למחוק משימות Dataflow, אבל אפשר לארכב משימות שהושלמו. כל המשימות שהושלמו, כולל משימות ברשימת המשימות שהועברו לארכיון, נמחקות אחרי תקופת שמירה של 30 יום.

ביטול משימת Dataflow

כשמבטלים משימה, שירות Dataflow מפסיק את המשימה באופן מיידי.

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

  1. שירות Dataflow מפסיק את כל הטמעת הנתונים ועיבוד הנתונים.

  2. שירות Dataflow מתחיל לנקות את המשאבים שמצורפים לעבודה. Google Cloud

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

מידע חשוב על ביטול משימה

  • ביטול של עבודה עוצר מיידית את העיבוד של צינור עיבוד הנתונים.

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

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

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

הפסקת הפעלה של משימת Dataflow

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

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

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

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

  3. כשכל פעולות העיבוד והכתיבה שממתינות להשלמה מסתיימות, שירות Dataflow משבית את המשאבים שמשויכים לעבודה. Google Cloud

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

מידע חשוב על ניקוי של משימה

  • אי אפשר להפסיק את הפעולה של צינורות להעברת נתונים באצווה.

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

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

  • אפשר לבטל עבודות שמתבצעות כרגע.

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

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

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

שמירת נתונים

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

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

משימות תקועות

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

טיימרים

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

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

ההשלכות של ניקוז עבודה

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

המערכת לא מחכה שחלונות זמן פתוחים יסתיימו בפעולת ניקוי.

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

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

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

אם מרוקנים צינור עם חלונות של שעה בשעה 12:34, החלון של 12:00 עד 13:00 נסגר עם הנתונים שהופעלו רק ב-34 הדקות הראשונות של החלון. הצינור לא קורא נתונים חדשים אחרי השעה 12:34.

אם מפעילים מחדש את צינור הנתונים מיד לאחר מכן, חלון הזמן שבין 12:00 ל-13:00 מופעל שוב, עם הנתונים שנקראו רק בין 12:35 ל-13:00. המערכת לא שולחת כפילויות, אבל אם שם קובץ חוזר על עצמו, הנתונים נמחקים.

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

תצוגת שלבים של פעולת ניקוז.

איור 1. תצוגת שלבים של פעולת ניקוז.

ביטול בכוח של משימת Dataflow

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

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

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

  • שירות Dataflow מפסיק את כל הטמעת הנתונים ועיבוד הנתונים.

מידע חשוב על ביטול מאולץ של עבודה

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

  • ביטול בכוח של עבודה מיועד רק לעבודות שנתקעו בתהליך הביטול הרגיל.

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

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

הפסקת משימת Dataflow

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

המסוף

  1. עוברים לדף משימות ב-Dataflow.

    מעבר אל Jobs

  2. לוחצים על העבודה שרוצים להפסיק.

    כדי לעצור עבודה, הסטטוס שלה צריך להיות running.

  3. בדף פרטי המשימה, לוחצים על עצירה.

  4. מבצעים אחת מהפעולות הבאות:

    • בצינורות להעברת נתונים באצווה, לוחצים על ביטול או על ביטול בכוח.

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

  5. כדי לאשר את הבחירה, לוחצים על עצירת העבודה.

gcloud

כדי לנקז עבודה או לבטל עבודה ב-Dataflow, אפשר להשתמש בפקודה gcloud dataflow jobs ב-Cloud Shell או בטרמינל מקומי שמותקן בו gcloud CLI.

  1. מתחברים למעטפת.

  2. מציגים את רשימת מזהי המשימות של משימות Dataflow שפועלות כרגע, ורושמים את מזהה המשימה שרוצים להפסיק:

    gcloud dataflow jobs list
    

    אם לא מוגדר הדגל --region, מוצגות משימות Dataflow מכל האזורים הזמינים.

  3. מבצעים אחת מהפעולות הבאות:

    • כדי לסיים עבודת סטרימינג:

      gcloud dataflow jobs drain JOB_ID
      

      מחליפים את JOB_ID במזהה המשימה שהעתקתם קודם.

    • כדי לבטל עבודה של עיבוד אצווה או סטרימינג:

      gcloud dataflow jobs cancel JOB_ID
      

      מחליפים את JOB_ID במזהה המשימה שהעתקתם קודם.

    • כדי לבטל בכוח משימת אצווה או משימת סטרימינג:

      gcloud dataflow jobs cancel JOB_ID --force
      

      מחליפים את JOB_ID במזהה המשימה שהעתקתם קודם.

API

כדי לבטל או לסיים עבודה באמצעות Dataflow REST API, אפשר לבחור באפשרות projects.locations.jobs.update או באפשרות projects.jobs.update. בגוף הבקשה, מעבירים את מצב המשימה הנדרש בשדה requestedState של מופע המשימה של ה-API שנבחר.

חשוב: מומלץ להשתמש ב-projects.locations.jobs.update, כי projects.jobs.update מאפשר רק לעדכן את הסטטוס של משימות שפועלות ב-us-central1.

  • כדי לבטל את העבודה, מגדירים את מצב העבודה ל-JOB_STATE_CANCELLED.

  • כדי לסיים את העבודה, מגדירים את מצב העבודה ל-JOB_STATE_DRAINED.

  • כדי לבטל את העבודה בכוח, מגדירים את מצב העבודה ל-JOB_STATE_CANCELLED עם התווית "force_cancel_job": "true". גוף הבקשה הוא:

    {
      "requestedState": "JOB_STATE_CANCELLED",
      "labels": {
        "force_cancel_job": "true"
      }
    }
    

זיהוי השלמה של משימה ב-Dataflow

כדי לזהות מתי ביטול העבודה או ניקוי הנתונים הסתיים, משתמשים באחת מהשיטות הבאות:

  • משתמשים בשירות לתזמור תהליכי עבודה, כמו Managed Service for Apache Airflow, כדי לנטר את עבודת Dataflow.
  • מריצים את צינור הנתונים באופן סינכרוני כדי שהמשימות ייחסמו עד לסיום צינור הנתונים. מידע נוסף מופיע במאמר שליטה במצבי הפעלה בקטע בנושא הגדרת אפשרויות של צינורות.
  • משתמשים בכלי שורת הפקודה ב-Google Cloud CLI כדי לבדוק את סטטוס העבודה. כדי לקבל רשימה של כל משימות Dataflow בפרויקט, מריצים את הפקודה הבאה במעטפת או בטרמינל:

    gcloud dataflow jobs list
    

    בפלט מוצגים מזהה המשימה, השם, הסטטוס (STATE) ומידע נוסף על כל משימה. מידע נוסף מופיע במאמר שימוש ב-Google Cloud CLI כדי להציג רשימה של משימות.

ארכיון של משימות שהושלמו ב-Dataflow

כשמעבירים משימת Dataflow לארכיון, המשימה מוסרת מרשימת המשימות בדף Jobs ב-Dataflow במסוף. המשרה מועברת לרשימת משרות בארכיון. אפשר להעביר לארכיון רק משימות שהושלמו, כולל משימות במצבים הבאים:

  • JOB_STATE_CANCELLED
  • JOB_STATE_DRAINED
  • JOB_STATE_DONE
  • JOB_STATE_FAILED
  • JOB_STATE_UPDATED

מידע נוסף על אימות המצבים האלה זמין במאמר זיהוי השלמה של משימת Dataflow.

לקבלת מידע על פתרון בעיות בהעברת משרות לארכיון, אפשר לעיין במאמר פתרון בעיות בהעברת משרות לארכיון בקטע 'פתרון בעיות ב-Dataflow'.

כל המשרות שהועברו לארכיון נמחקות אחרי תקופת שמירה של 30 יום.

העברת משרה לארכיון

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

המסוף

  1. נכנסים לדף Jobs של Dataflow במסוף Google Cloud .

    מעבר אל Jobs

    מוצגת רשימה של משימות Dataflow עם הסטטוס שלהן.

  2. בוחרים משרה.

  3. בדף Job Details (פרטי המשרה), לוחצים על Archive (העברה לארכיון). אם העבודה לא הסתיימה, האפשרות העברה לארכיון לא זמינה.

REST

כדי להעביר משרה לארכיון באמצעות ה-API, משתמשים ב-method‏ projects.locations.jobs.update.

בבקשה הזו צריך לציין אובייקט JobMetadata מעודכן. באובייקט JobMetadata.userDisplayProperties, משתמשים בצמד מפתח/ערך "archived":"true".

בנוסף לאובייקט JobMetadata המעודכן, בקשת ה-API צריכה לכלול גם את פרמטר השאילתה updateMask בכתובת ה-URL של הבקשה:

https://dataflow.googleapis.com/v1b3/[...]/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived

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

  • PROJECT_ID: מזהה הפרויקט
  • REGION: אזור Dataflow
  • JOB_ID: המזהה של משימת Dataflow

ה-method של ה-HTTP וכתובת ה-URL:

PUT https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived

גוף בקשת JSON:

{
  "job_metadata": {
    "userDisplayProperties": {
      "archived": "true"
    }
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X PUT \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PUT `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "id": "JOB_ID",
  "projectId": "PROJECT_ID",
  "currentState": "JOB_STATE_DONE",
  "currentStateTime": "2025-05-20T20:54:41.651442Z",
  "createTime": "2025-05-20T20:51:06.031248Z",
  "jobMetadata": {
    "userDisplayProperties": {
      "archived": "true"
    }
  },
  "startTime": "2025-05-20T20:51:06.031248Z"
}

gcloud

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

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

  • JOB_ID: המזהה של משימת Dataflow שרוצים להעביר לארכיון.
  • REGION: אופציונלי. האזור של Dataflow שבו מתבצעת העבודה.

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud dataflow jobs archive JOB_ID --region=REGION_ID

‏Windows (PowerShell)

gcloud dataflow jobs archive JOB_ID --region=REGION_ID

Windows‏ (cmd.exe)

gcloud dataflow jobs archive JOB_ID --region=REGION_ID

אמורים לקבל תגובה שדומה לזו:

Archived job [JOB_ID].
createTime: '2025-06-29T11:00:02.432552Z'
currentState: JOB_STATE_DONE
currentStateTime: '2025-06-29T11:04:25.125921Z'
id: JOB_ID
jobMetadata:
userDisplayProperties:
    archived: 'true'
projectId: PROJECT_ID
startTime: '2025-06-29T11:00:02.432552Z'

הצגה ושחזור של עבודות שהועברו לארכיון

כדי לראות משימות שהועברו לארכיון או לשחזר משימות שהועברו לארכיון לרשימת המשימות הראשית בדף Jobs ב-Dataflow, פועלים לפי השלבים הבאים.

המסוף

  1. נכנסים לדף Jobs של Dataflow במסוף Google Cloud .

    מעבר אל Jobs

  2. לוחצים על המתג בארכיון. תוצג רשימה של משימות Dataflow שהועברו לארכיון.

  3. בוחרים משרה.

  4. כדי לשחזר את המשימה לרשימת המשימות הראשית בדף Jobs (משימות) ב-Dataflow, לוחצים על Restore (שחזור) בדף Job Details (פרטי המשימה).

REST

כדי לשחזר משימה שהועברה לארכיון באמצעות ה-API, משתמשים ב-method‏ projects.locations.jobs.update.

בבקשה הזו צריך לציין אובייקט JobMetadata מעודכן. באובייקט JobMetadata.userDisplayProperties, משתמשים בצמד מפתח/ערך "archived":"false".

בנוסף לאובייקט JobMetadata המעודכן, בקשת ה-API צריכה לכלול גם את פרמטר השאילתה updateMask בכתובת ה-URL של הבקשה:

https://dataflow.googleapis.com/v1b3/[...]/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived

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

  • PROJECT_ID: מזהה הפרויקט
  • REGION: אזור Dataflow
  • JOB_ID: המזהה של משימת Dataflow

ה-method של ה-HTTP וכתובת ה-URL:

PUT https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived

גוף בקשת JSON:

{
  "job_metadata": {
    "userDisplayProperties": {
      "archived": "false"
    }
  }
}

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

curl

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

curl -X PUT \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived"

PowerShell

שומרים את גוף הבקשה בקובץ בשם request.json ומריצים את הפקודה הבאה:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PUT `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID/?updateMask=job_metadata.user_display_properties.archived" | Select-Object -Expand Content

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "id": "JOB_ID",
  "projectId": "PROJECT_ID",
  "currentState": "JOB_STATE_DONE",
  "currentStateTime": "2025-05-20T20:54:41.651442Z",
  "createTime": "2025-05-20T20:51:06.031248Z",
  "jobMetadata": {
    "userDisplayProperties": {
      "archived": "false"
    }
  },
  "startTime": "2025-05-20T20:51:06.031248Z"
}

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