יצירה וניהול של משימות של פעולות בחבילות

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

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

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

הגדרת Storage Intelligence

כדי ליצור ולנהל משימות של פעולות אצווה ב-Storage, צריך להגדיר את Storage Intelligence בקטגוריה שבה רוצים להריץ את המשימה.

הגדרת Google Cloud CLI

אתם צריכים להשתמש ב-Google Cloud CLI בגרסה 516.0.0 ואילך.

הגדרת פרויקט ברירת מחדל

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

gcloud config set project PROJECT_ID

כאשר PROJECT_ID הוא מזהה הפרויקט.

הפעלת ה-API

מפעילים את API של פעולות אצווה באחסון.

gcloud services enable storagebatchoperations.googleapis.com

יצירת קובץ מניפסט

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

יצירת משימת פעולות אצווה באחסון

בקטע הזה מוסבר איך ליצור משימת פעולות אצווה באחסון.

שורת הפקודה

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

    בסביבת הפיתוח, מריצים את הפקודה gcloud storage batch-operations jobs create עם הדגל --dry-run:

    gcloud storage batch-operations jobs create DRY_RUN_JOB_NAME --bucket=BUCKET_NAME OBJECT_SELECTION_FLAG JOB_TYPE_FLAG --dry-run

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

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

  3. אחרי הרצת בדיקה מוצלחת, מריצים את הפקודה gcloud storage batch-operations jobs create.

    gcloud storage batch-operations jobs create JOB_NAME --bucket=BUCKET_NAME OBJECT_SELECTION_FLAG JOB_TYPE_FLAG

    כאשר הפרמטרים הם:

    • DRY_RUN_JOB_NAME הוא השם של משימת ההרצה היבשה של פעולות אצווה באחסון.
    • JOB_NAME הוא השם של עבודת האחסון של פעולות בחבילות.

    • BUCKET_NAME הוא השם של הקטגוריה שמכילה אובייקט אחד או יותר שרוצים לעבד.

    • OBJECT_SELECTION_FLAG הוא אחד מהדגלים הבאים שצריך לציין:

      • --included-object-prefixes: מציינים תחיליות של אובייקטים. לדוגמה:

        • כדי להתאים קידומת אחת, משתמשים ב: --included-object-prefixes='prefix1'.
        • כדי להתאים לכמה קידומות, משתמשים ברשימת קידומות שמופרדת בפסיקים: --included-object-prefixes='prefix1,prefix2'.
        • כדי לכלול את כל האובייקטים, משתמשים בתוספת לשם המאפיין ריקה: --included-object-prefixes=''.
      • --manifest-location: ציון המיקום של המניפסט. לדוגמה, gs://bucket_name/path/object_name.csv.

    • JOB_TYPE_FLAG הוא אחד מהדגלים הבאים שצריך לציין, בהתאם לסוג העבודה.

      • --delete-object: מחיקת אובייקט אחד או יותר.

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

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

      • --enable-permanent-object-deletion: מחיקה סופית של אובייקטים. משתמשים בדגל הזה יחד עם הדגל --delete-object כדי למחוק באופן סופי אובייקטים פעילים ולא עדכניים בקטגוריה, ללא קשר להגדרת ניהול הגרסאות של האובייקטים בקטגוריה.

      • --put-metadata: עדכון מטא-נתונים של אובייקט. מטא-נתונים של אובייקט מאוחסנים כצמדי מפתח/ערך. מציינים את צמד המפתח/הערך של המטא-נתונים שרוצים לשנות. אפשר לציין צמד מפתח/ערך אחד או יותר כרשימה. אפשר גם להגדיר הגדרות לשמירת אובייקטים באמצעות הדגל --put-metadata. כדי לעשות זאת, מציינים את פרמטרי השמירה באמצעות השדות Retain-Until ו-Retention-Mode. לדוגמה,

        gcloud storage batch-operations jobs create my-job --bucket=my-bucket --manifest=manifest.csv --put-metadata=Retain-Until=RETAIN_UNTIL_TIME, Retention-Mode=RETENTION_MODE

        כאשר:

        • RETAIN_UNTIL_TIME הוא התאריך והשעה בפורמט RFC 3339 שעד אליהם האובייקט נשמר. לדוגמה: 2025-10-09T10:30:00Z. כדי להגדיר את הגדרות השמירה של אובייקט, צריך להפעיל שמירה בקטגוריה שמכילה את האובייקט.

        • RETENTION_MODE הוא מצב שמירת הנתונים, Unlocked או Locked.

          כששולחים בקשה לעדכון השדות RETENTION_MODE ו-RETAIN_UNTIL_TIME, חשוב לשים לב לנקודות הבאות:

          • כדי לעדכן את הגדרת השמירה של האובייקט, צריך לספק ערכים לא ריקים לשדות RETENTION_MODE ו-RETAIN_UNTIL_TIME. אם מגדירים רק אחד מהם, מתקבלת שגיאה INVALID_ARGUMENT.
          • אפשר להאריך את הערך של RETAIN_UNTIL_TIME לאובייקטים במצבים Unlocked או Locked.
          • אם רוצים לבצע את הפעולות הבאות, צריך להגדיר את שמירת האובייקט במצב Unlocked:
            • מפחיתים את הערך של RETAIN_UNTIL_TIME.
            • מסירים את הגדרת השמירה. כדי להסיר את ההגדרה, צריך לספק ערכים ריקים בשדות RETENTION_MODE ו-RETAIN_UNTIL_TIME.
          • אם תשמיטו את שני השדות RETENTION_MODE ו-RETAIN_UNTIL_TIME, הגדרת השמירה לא תשתנה.

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

        • --put-object-event-based-hold: הפעלת החזקות אובייקטים מבוססות-אירועים.

        • --no-put-object-event-based-hold: השבתה של החזקות אובייקטים מבוססות-אירועים.

        • --put-object-temporary-hold: הפעלת החזקות אובייקטים זמניות.

        • --no-put-object-temporary-hold: השבתה של החזקות אובייקטים זמניות.

          בדוגמה הבאה מוצג אופן יצירת משימה לעדכון המטא-נתונים של Content-Language ל-en עבור כל האובייקטים שמפורטים ב-manifest.csv.

          gcloud storage batch-operations jobs create my-job\
          --bucket=my-bucket\
          --manifest-location=gs://my-bucket/manifest.csv\
          --put-metadata=Content-Language=en
          
    • ספריות לקוח

      C++

      למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C++ API.

      כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

      [](google::cloud::storagebatchoperations_v1::StorageBatchOperationsClient
             client,
         std::string const& project_id, std::string const& job_id,
         std::string const& target_bucket_name, std::string const& object_prefix) {
        auto const parent =
            std::string{"projects/"} + project_id + "/locations/global";
        namespace sbo = google::cloud::storagebatchoperations::v1;
        sbo::Job job;
        sbo::BucketList* bucket_list = job.mutable_bucket_list();
        sbo::BucketList::Bucket* bucket_config = bucket_list->add_buckets();
        bucket_config->set_bucket(target_bucket_name);
        sbo::PrefixList* prefix_list_config = bucket_config->mutable_prefix_list();
        prefix_list_config->add_included_object_prefixes(object_prefix);
        sbo::DeleteObject* delete_object_config = job.mutable_delete_object();
        delete_object_config->set_permanent_object_deletion_enabled(false);
        auto result = client.CreateJob(parent, job, job_id).get();
        if (!result) throw result.status();
        std::cout << "Created job: " << result->name() << "\n";
      }

      PHP

      למידע נוסף, קראו את מאמרי העזרה של Cloud Storage PHP API.

      כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

      use Google\Cloud\StorageBatchOperations\V1\Client\StorageBatchOperationsClient;
      use Google\Cloud\StorageBatchOperations\V1\CreateJobRequest;
      use Google\Cloud\StorageBatchOperations\V1\Job;
      use Google\Cloud\StorageBatchOperations\V1\BucketList;
      use Google\Cloud\StorageBatchOperations\V1\BucketList\Bucket;
      use Google\Cloud\StorageBatchOperations\V1\PrefixList;
      use Google\Cloud\StorageBatchOperations\V1\DeleteObject;
      
      /**
       * Create a new batch job.
       *
       * @param string $projectId Your Google Cloud project ID.
       *        (e.g. 'my-project-id')
       * @param string $jobId A unique identifier for this job.
       *        (e.g. '94d60cc1-2d95-41c5-b6e3-ff66cd3532d5')
       * @param string $bucketName The name of your Cloud Storage bucket to operate on.
       *        (e.g. 'my-bucket')
       * @param string $objectPrefix The prefix of objects to include in the operation.
       *        (e.g. 'prefix1')
       */
      function create_job(string $projectId, string $jobId, string $bucketName, string $objectPrefix): void
      {
          // Create a client.
          $storageBatchOperationsClient = new StorageBatchOperationsClient();
      
          $parent = $storageBatchOperationsClient->locationName($projectId, 'global');
      
          $prefixListConfig = new PrefixList(['included_object_prefixes' => [$objectPrefix]]);
          $bucket = new Bucket(['bucket' => $bucketName, 'prefix_list' => $prefixListConfig]);
          $bucketList = new BucketList(['buckets' => [$bucket]]);
      
          $deleteObject = new DeleteObject(['permanent_object_deletion_enabled' => false]);
      
          $job = new Job(['bucket_list' => $bucketList, 'delete_object' => $deleteObject]);
      
          $request = new CreateJobRequest([
              'parent' => $parent,
              'job_id' => $jobId,
              'job' => $job,
          ]);
          $response = $storageBatchOperationsClient->createJob($request);
      
          printf('Created job: %s', $response->getName());
      }

      ממשקי API ל-REST

      API ל-JSON

      1. התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת Authorization.

      2. יוצרים קובץ JSON עם ההגדרות של העבודה של פעולות אצווה באחסון. אלו ההגדרות הנפוצות שצריך לכלול:

        {
            "Description": "JOB_DESCRIPTION",
            "BucketList":
            {
            "Buckets":
            [
             {
               "Bucket": "BUCKET_NAME",
               "Manifest": {
                  "manifest_location": "MANIFEST_LOCATION"
                   }
               "PrefixList": {
                  "include_object_prefixes": "OBJECT_PREFIXES"
                   }
             }
            ]
            },
            "DeleteObject":
            {
            "permanent_object_deletion_enabled": OBJECT_DELETION_VALUE
             }
            "RewriteObject": {
              "kms_key":"KMS_KEY_VALUE"
              }
            "PutMetadata":{
              "METADATA_KEY": "METADATA_VALUE",
              ...,
              "objectRetention": {
                  "retainUntilTime": "RETAIN_UNTIL_TIME",
                  "mode": "RETENTION_MODE"
                 }
               }
            "PutObjectHold": {
              "temporary_hold": TEMPORARY_HOLD_VALUE,
              "event_based_hold": EVENT_BASED_HOLD_VALUE
            },
            "dryRun": DRY_RUN_VALUE
            }
             

        כאשר:

        • JOB_NAME הוא השם של עבודת האחסון של פעולות בחבילות.

        • JOB_DESCRIPTION הוא התיאור של עבודת האצווה של פעולות האחסון.

        • BUCKET_NAME הוא שם הקטגוריה שמכילה אובייקט אחד או יותר שרוצים לעבד.

        • כדי לציין את האובייקטים שרוצים לעבד, משתמשים באחד מהמאפיינים הבאים בקובץ ה-JSON:

          • MANIFEST_LOCATION הוא המיקום של קובץ המניפסט. לדוגמה, gs://bucket_name/path/object_name.csv.

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

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

          • מחיקת אובייקטים:

            "DeleteObject":
            {
            "permanent_object_deletion_enabled": OBJECT_DELETION_VALUE
            }

            כאשר OBJECT_DELETION_VALUE הוא TRUE כדי למחוק אובייקטים.

          • עדכון מפתח הצפנה בניהול הלקוח לאובייקטים:

            "RewriteObject":
            {
            "kms_key": KMS_KEY_VALUE
            }

            כאשר KMS_KEY_VALUE הוא הערך של מפתח ה-KMS של האובייקט שרוצים לעדכן.

          • עדכון מטא-נתונים של אובייקטים:

            "PutMetadata": {
             "METADATA_KEY": "METADATA_VALUE",
             ...,
            "objectRetention": {
               "retainUntilTime": "RETAIN_UNTIL_TIME",
               "mode": "RETENTION_MODE"
             }
            }

            כאשר:

            • METADATA_KEY/VALUE הוא צמד מפתח/ערך של המטא-נתונים של האובייקט. אפשר לציין זוג אחד או יותר.
            • RETAIN_UNTIL_TIME הוא התאריך והשעה, בפורמט RFC 3339, עד אליהם האובייקט נשמר. לדוגמה, 2025-10-09T10:30:00Z. כדי להגדיר את הגדרות השמירה באובייקט, צריך להפעיל שמירה בקטגוריה שמכילה את האובייקט.
            • RETENTION_MODE הוא מצב שמירת הנתונים, Unlocked או Locked.

              כששולחים בקשה לעדכון השדות RETENTION_MODE ו-RETAIN_UNTIL_TIME, חשוב לשים לב לנקודות הבאות:

              • כדי לעדכן את הגדרת השמירה של האובייקט, צריך לספק ערכים לא ריקים לשדות RETENTION_MODE ו-RETAIN_UNTIL_TIME. אם מגדירים רק אחד מהם, מתקבלת שגיאה INVALID_ARGUMENT.
              • אפשר להאריך את הערך של RETAIN_UNTIL_TIME לאובייקטים במצבים Unlocked או Locked.
              • אם רוצים לבצע את הפעולות הבאות, צריך להגדיר את שמירת האובייקט במצב Unlocked:
                • מפחיתים את הערך של RETAIN_UNTIL_TIME.
                • מסירים את הגדרת השמירה. כדי להסיר את ההגדרה, צריך לספק ערכים ריקים בשדות RETENTION_MODE ו-RETAIN_UNTIL_TIME.
              • אם תשמיטו את שני השדות RETENTION_MODE ו-RETAIN_UNTIL_TIME, הגדרת השמירה לא תשתנה.
            • עדכון השהיות של אובייקטים:

              "PutObjectHold": {
              "temporary_hold": TEMPORARY_HOLD_VALUE,
              "event_based_hold": EVENT_BASED_HOLD_VALUE
              }

              כאשר:

              • TEMPORARY_HOLD_VALUE משמש להפעלה או להשבתה של דגל object hold זמני. הערך 1 מפעיל את ההמתנה, והערך 2 משבית אותה.

              • EVENT_BASED_HOLD_VALUE משמש להפעלה או להשבתה של דגל object hold מבוסס-אירועים. הערך 1 מפעיל את ההמתנה, והערך 2 משבית אותה.

          • DRY_RUN_VALUE הוא ערך בוליאני אופציונלי. מגדירים את הערך true כדי להריץ את העבודה במצב פרימטר לבדיקות. ערך ברירת המחדל הוא false.

        • משתמשים ב-cURL כדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשה של פעולות אצווה באחסון POST:

          curl -X POST --data-binary @JSON_FILE_NAME \
           -H "Authorization: Bearer $(gcloud auth print-access-token)" \
           -H "Content-Type: application/json" \
           "https://storagebatchoperations.googleapis.com/v1/projects/PROJECT_ID/locations/global/jobs?job_id=JOB_NAME"

          כאשר:

          • JSON_FILE_NAME הוא השם של קובץ ה-JSON.
          • PROJECT_ID הוא המזהה או המספר של הפרויקט. לדוגמה, my-project.
          • JOB_NAME הוא השם של עבודת האחסון של פעולות בחבילות.

קבלת פרטים על משימות של פעולות אצווה באחסון

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

שורת הפקודה

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. בסביבת הפיתוח, מריצים את הפקודה gcloud storage batch-operations jobs describe.

    gcloud storage batch-operations jobs describe JOB_ID

    כאשר:

    JOB_ID הוא השם של עבודת האחסון של פעולות בחבילות.

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

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

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

      bucketList:
        buckets:
        - bucket: my-bucket
          manifest:
            manifestLocation: gs://my-bucket/manifest.csv
      completeTime: '2025-10-27T23:56:32Z'
      counters:
        totalObjectCount: '4'
      createTime: '2025-10-27T23:56:22.243528568Z'
      dryRun: true
      name: projects/my-project/locations/global/jobs/my-job
      putMetadata:
        contentLanguage: en
      state: SUCCEEDED
    

    תשובה תקינה לגבי משימה לא כוללת את השדה dryRun ומחזירה את המדדים הבאים בשדה counters:

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

    התגובה להרצת משימה בפועל נראית בערך כך:

      bucketList:
        buckets:
        - bucket: my-bucket
          manifest:
            manifestLocation: gs://my-bucket/manifest.csv
      completeTime: '2025-10-31T20:19:42.357826655Z'
      counters:
        succeededObjectCount: '4'
        totalObjectCount: '4'
      createTime: '2025-10-31T20:19:22.016517077Z'
      name: projects/my-project/locations/global/jobs/my-job
      putMetadata:
        contentLanguage: en
      state: SUCCEEDED
      

  3. ספריות לקוח

    C++

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C++ API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    [](google::cloud::storagebatchoperations_v1::StorageBatchOperationsClient
           client,
       std::string const& project_id, std::string const& job_id) {
      auto const parent =
          std::string{"projects/"} + project_id + "/locations/global";
      auto const name = parent + "/jobs/" + job_id;
      auto job = client.GetJob(name);
      if (!job) throw job.status();
      std::cout << "Got job: " << job->name() << "\n";
    }

    PHP

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage PHP API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    use Google\Cloud\StorageBatchOperations\V1\Client\StorageBatchOperationsClient;
    use Google\Cloud\StorageBatchOperations\V1\GetJobRequest;
    
    /**
     * Gets a batch job.
     *
     * @param string $projectId Your Google Cloud project ID.
     *        (e.g. 'my-project-id')
     * @param string $jobId A unique identifier for this job.
     *        (e.g. '94d60cc1-2d95-41c5-b6e3-ff66cd3532d5')
     */
    function get_job(string $projectId, string $jobId): void
    {
        // Create a client.
        $storageBatchOperationsClient = new StorageBatchOperationsClient();
    
        $parent = $storageBatchOperationsClient->locationName($projectId, 'global');
        $formattedName = $parent . '/jobs/' . $jobId;
    
        $request = new GetJobRequest([
            'name' => $formattedName,
        ]);
    
        $response = $storageBatchOperationsClient->getJob($request);
    
        printf('Got job: %s', $response->getName());
    }

    ממשקי API ל-REST

    API ל-JSON

    1. התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת Authorization.

    2. משתמשים ב- cURL כדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשה של GET פעולות אצווה באחסון:

      curl -X GET \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        "https://storagebatchoperations.googleapis.com/v1/projects/PROJECT_ID/locations/global/jobs/JOB_ID"

      כאשר:

      • PROJECT_ID הוא המזהה או המספר של הפרויקט. לדוגמה, my-project.
      • JOB_ID הוא השם של עבודת האחסון של פעולות בחבילות.

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

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

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

      {
        "name": "projects/my-project/locations/global/jobs/my-job",
        "description": "dry-run-job",
        "deleteObject": {
          "permanent_object_deletion_enabled": true
           },
        "createTime": "2025-10-28T00:26:53.900882459Z",
        "completeTime": "2025-10-28T00:27:04.101663275Z",
        "counters": {
            "totalObjectCount": "5",
            "totalBytesFound": "203"
          },
        "state": "SUCCEEDED",
        "bucketList": {
          "buckets": [
            {
              "bucket": "my-bucket",
              "prefixList": {
                "includedObjectPrefixes": [
                  ""
                ]
              }
            }
          ]
        },
        "dryRun": true
      }
      

    תשובה תקינה לגבי משימה לא כוללת את השדה dryRun ומחזירה את המדדים הבאים בשדה counters:

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

      התגובה להרצת משימה בפועל נראית בערך כך:

      {
      "name": "my-job",
      "description": "my-delete-objects-job",
      "deleteObject": {
        "permanent_object_deletion_enabled": true
      },
      "createTime": "2025-10-28T00:26:53.900882459Z",
      "completeTime": "2025-10-28T00:27:04.101663275Z",
      "counters": {
        "succeededObjectCount: "5"
        "totalObjectCount": "5",
        "totalBytesFound": "203"
      },
      "state": "SUCCEEDED",
      "bucketList": {
        "buckets": [
          {
            "bucket": "my-bucket",
            "prefixList": {
              "includedObjectPrefixes": [
                ""
              ]
            }
          }
        ]
      }
      }
      

הצגת רשימה של משימות של פעולות אצווה באחסון

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

שורת הפקודה

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. בסביבת הפיתוח, מריצים את הפקודה gcloud storage batch-operations jobs list.

    gcloud storage batch-operations jobs list
  3. ספריות לקוח

    C++

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C++ API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    [](google::cloud::storagebatchoperations_v1::StorageBatchOperationsClient
           client,
       std::string const& project_id) {
      auto const parent =
          std::string{"projects/"} + project_id + "/locations/global";
      for (auto const& job : client.ListJobs(parent)) {
        if (!job) throw job.status();
        std::cout << job->name() << "\n";
      }
    }

    PHP

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage PHP API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    use Google\Cloud\StorageBatchOperations\V1\Client\StorageBatchOperationsClient;
    use Google\Cloud\StorageBatchOperations\V1\ListJobsRequest;
    
    /**
     * List Jobs in a given project.
     *
     * @param string $projectId Your Google Cloud project ID.
     *        (e.g. 'my-project-id')
     */
    function list_jobs(string $projectId): void
    {
        // Create a client.
        $storageBatchOperationsClient = new StorageBatchOperationsClient();
    
        $parent = $storageBatchOperationsClient->locationName($projectId, 'global');
    
        $request = new ListJobsRequest([
            'parent' => $parent,
        ]);
    
        $jobs = $storageBatchOperationsClient->listJobs($request);
    
        foreach ($jobs as $job) {
            printf('Job name: %s' . PHP_EOL, $job->getName());
        }
    }

    ממשקי API ל-REST

    API ל-JSON

    1. התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת Authorization.

    2. משתמשים ב- cURL כדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשה של LIST פעולות באצווה לאחסון:

      curl -X GET \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        "https://storagebatchoperations.googleapis.com/v1/projects/PROJECT_ID/locations/global/jobs"

      כאשר:

      PROJECT_ID הוא המזהה או המספר של הפרויקט. לדוגמה, my-project.

ביטול של עבודת עדכון בכמות גדולה של נפח אחסון

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

שורת הפקודה

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. בסביבת הפיתוח, מריצים את הפקודה gcloud storage batch-operations jobs cancel.

    gcloud storage batch-operations jobs cancel JOB_ID

    כאשר:

    JOB_ID הוא השם של עבודת האחסון של פעולות בחבילות.

  3. ספריות לקוח

    C++

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C++ API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    [](google::cloud::storagebatchoperations_v1::StorageBatchOperationsClient
           client,
       std::string const& project_id, std::string const& job_id) {
      auto const parent =
          std::string{"projects/"} + project_id + "/locations/global";
      auto const name = parent + "/jobs/" + job_id;
      auto response = client.CancelJob(name);
      if (!response) throw response.status();
      std::cout << "Cancelled job: " << name << "\n";
    }

    PHP

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage PHP API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    use Google\Cloud\StorageBatchOperations\V1\Client\StorageBatchOperationsClient;
    use Google\Cloud\StorageBatchOperations\V1\CancelJobRequest;
    
    /**
     * Cancel a batch job.
     *
     * @param string $projectId Your Google Cloud project ID.
     *        (e.g. 'my-project-id')
     * @param string $jobId A unique identifier for this job.
     *        (e.g. '94d60cc1-2d95-41c5-b6e3-ff66cd3532d5')
     */
    function cancel_job(string $projectId, string $jobId): void
    {
        // Create a client.
        $storageBatchOperationsClient = new StorageBatchOperationsClient();
    
        $parent = $storageBatchOperationsClient->locationName($projectId, 'global');
        $formattedName = $parent . '/jobs/' . $jobId;
    
        $request = new CancelJobRequest([
            'name' => $formattedName,
        ]);
    
        $storageBatchOperationsClient->cancelJob($request);
    
        printf('Cancelled job: %s', $formattedName);
    }

    ממשקי API ל-REST

    API ל-JSON

    1. התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת Authorization.

    2. משתמשים ב- cURL כדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשה של CANCEL פעולות אצווה לאחסון:

      curl -X CANCEL \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        "https://storagebatchoperations.googleapis.com/v1/projects/PROJECT_ID/locations/global/jobs/JOB_ID"

      כאשר:

      • PROJECT_ID הוא המזהה או המספר של הפרויקט. לדוגמה, my-project.

      • JOB_ID הוא השם של עבודת האחסון של פעולות בחבילות.

מחיקה של משימת פעולות באצווה באחסון

בקטע הזה מוסבר איך למחוק משימה של פעולות באצווה באחסון.

שורת הפקודה

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. בסביבת הפיתוח, מריצים את הפקודה gcloud storage batch-operations jobs delete.

    gcloud storage batch-operations jobs delete JOB_ID

    כאשר:

    JOB_ID הוא השם של עבודת האחסון של פעולות בחבילות.

  3. ספריות לקוח

    C++

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage C++ API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    [](google::cloud::storagebatchoperations_v1::StorageBatchOperationsClient
           client,
       std::string const& project_id, std::string const& job_id) {
      auto const parent =
          std::string{"projects/"} + project_id + "/locations/global";
      auto const name = parent + "/jobs/" + job_id;
      auto status = client.DeleteJob(name);
      if (!status.ok()) throw status;
      std::cout << "Deleted job: " << name << "\n";
    }

    PHP

    למידע נוסף, קראו את מאמרי העזרה של Cloud Storage PHP API.

    כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

    use Google\Cloud\StorageBatchOperations\V1\Client\StorageBatchOperationsClient;
    use Google\Cloud\StorageBatchOperations\V1\DeleteJobRequest;
    
    /**
     * Delete a batch job.
     *
     * @param string $projectId Your Google Cloud project ID.
     *        (e.g. 'my-project-id')
     * @param string $jobId A unique identifier for this job.
     *        (e.g. '94d60cc1-2d95-41c5-b6e3-ff66cd3532d5')
     */
    function delete_job(string $projectId, string $jobId): void
    {
        // Create a client.
        $storageBatchOperationsClient = new StorageBatchOperationsClient();
    
        $parent = $storageBatchOperationsClient->locationName($projectId, 'global');
        $formattedName = $parent . '/jobs/' . $jobId;
    
        $request = new DeleteJobRequest([
            'name' => $formattedName,
        ]);
    
        $storageBatchOperationsClient->deleteJob($request);
    
        printf('Deleted job: %s', $formattedName);
    }

    ממשקי API ל-REST

    API ל-JSON

    1. התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת Authorization.

    2. משתמשים ב- cURL כדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשה של DELETE פעולות אצווה לאחסון:

      curl -X DELETE \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        "https://storagebatchoperations.googleapis.com/v1/projects/PROJECT_ID/locations/global/jobs/JOB_ID"

      כאשר:

      • PROJECT_ID הוא המזהה או המספר של הפרויקט. לדוגמה, my-project.

      • JOB_ID הוא השם של עבודת האחסון של פעולות בחבילות.

יצירת משימת פעולות אצווה של אחסון באמצעות מערכי נתונים של Storage Insights

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

יצירת קובץ מניפסט באמצעות מערכי נתונים של Storage Insights

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

ההרצה של שאילתת ה-SQL הבאה ב-BigQuery בתצוגת מערך נתונים של Storage Insights מאחזרת אובייקטים שגדולים מ-1KiB וששמם הוא Temp_Training:

  EXPORT DATA OPTIONS(
   uri=`URI`,
   format=`CSV`,
   overwrite=OVERWRITE_VALUE,
   field_delimiter=',') AS
  SELECT bucket, name, generation
  FROM DATASET_VIEW_NAME
  WHERE bucket = BUCKET_NAME
  AND name LIKE (`Temp_Training%`)
  AND size > 1024 * 1024
  AND snapshotTime = SNAPSHOT_TIME
  

כאשר:

  • URI הוא ה-URI של הקטגוריה שמכילה את המניפסט. לדוגמה, gs://bucket_name/path_to_csv_file/*.csv. כשמשתמשים בתו כללי *.csv, מערכת BigQuery מייצאת את התוצאה לכמה קובצי CSV.
  • OVERWRITE_VALUE הוא ערך בוליאני. אם המדיניות מוגדרת כ-true, פעולת הייצוא מחליפה קבצים קיימים במיקום שצוין.
  • DATASET_VIEW_NAME הוא השם המלא של תצוגת מערך הנתונים של Storage Insights בפורמט PROJECT_ID.DATASET_ID.VIEW_NAME. כדי לראות את השם של מערך הנתונים, צופים במערך הנתונים המקושר.

    כאשר:

    • PROJECT_ID הוא המזהה או המספר של הפרויקט. לדוגמה, my-project.
    • DATASET_ID הוא שם מערך הנתונים. לדוגמה, objects-deletion-dataset.
    • VIEW_NAME הוא השם של תצוגת קבוצת הנתונים. לדוגמה, bucket_attributes_view.
  • BUCKET_NAME הוא שם הקטגוריה. לדוגמה, my-bucket.

  • SNAPSHOT_TIME הוא הזמן שבו נוצרה תמונת המצב של תצוגת מערך הנתונים ב-Storage Insights. לדוגמה, 2024-09-10T00:00:00Z.

יצירת משימת פעולות אצווה באחסון

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

שורת הפקודה

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. בסביבת הפיתוח, מריצים את הפקודה gcloud storage batch-operations jobs create:

    gcloud storage batch-operations jobs create \
    JOB_ID \
    --bucket=SOURCE_BUCKET_NAME \
    --manifest-location=URI \
    --JOB_TYPE_FLAG

    כאשר:

    • JOB_ID הוא השם של עבודת האחסון של פעולות בחבילות.

    • SOURCE_BUCKET_NAME היא הקטגוריה שמכילה אובייקט אחד או יותר שרוצים לעבד. לדוגמה, my-bucket.

    • URI הוא ה-URI של הקטגוריה שמכילה את המניפסט. לדוגמה, gs://bucket_name/path_to_csv_file/*.csv. כשמשתמשים בתו כללי *.csv, מערכת BigQuery מייצאת את התוצאה לכמה קובצי CSV.

    • JOB_TYPE_FLAG הוא אחד מהדגלים הבאים, בהתאם לסוג העבודה.

שילוב עם VPC Service Controls

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

שימוש ביומני הביקורת של Cloud למשימות של פעולות אצווה באחסון

משימות של פעולות באצווה ב-Storage מתעדות טרנספורמציות באובייקטים של Cloud Storage ביומני הביקורת של Cloud ב-Cloud Storage. אפשר להשתמש ביומני הביקורת של Cloud עם Cloud Storage כדי לעקוב אחרי השינויים באובייקטים שמתבצעים על ידי משימות של פעולות אצווה ב-Storage. מידע על הפעלת יומני ביקורת מופיע במאמר הפעלת יומני ביקורת. ברשומה ביומן הביקורת, שדה המטא-נתונים callUserAgent עם הערך StorageBatchOperations מציין טרנספורמציה של פעולות אצווה של אחסון.

השלבים הבאים