创建和管理批量操作作业

本页介绍了如何创建、查看、列出、取消和删除 存储空间批量操作作业。其中还介绍了如何将 Cloud Audit Logs 与存储批量操作作业搭配使用。

准备工作

如需创建和管理存储空间批量操作作业,请完成以下部分中的步骤。

配置存储空间分析情报

如需创建和管理存储空间批量操作作业,请在要运行作业的存储桶上配置存储空间分析情报

设置 Google Cloud CLI

您必须使用 Google Cloud CLI 516.0.0 或更高版本

设置默认项目

设置您要创建存储批量操作作业的项目。

gcloud config set project PROJECT_ID

其中,PROJECT_ID 是项目 ID。

启用 API

启用 Storage Batch Operations 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 命令。

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

    其中:

    • 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:删除一个或多个对象。

      • --put-metadata:更新对象元数据。对象元数据以键值对的形式存储。为您要修改的元数据指定键值对。您可以将一个或多个键值对指定为列表。

      • --rewrite-object:更新一个或多个对象的客户管理的加密密钥

      • --put-object-event-based-hold:启用基于事件的对象保留

      • --no-put-object-event-based-hold:停用基于事件的对象保持

      • --put-object-temporary-hold:启用临时对象保留

      • --no-put-object-temporary-hold:停用临时对象保留

REST API

JSON API

  1. 安装并初始化 gcloud CLI,以便为 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,
          ...,
          }
        "PutObjectHold": {
          "temporary_hold": TEMPORARY_HOLD_VALUE,
          "event_based_hold": EVENT_BASED_HOLD_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_VALUETRUE,用于删除对象。

      • 更新对象的客户管理的加密密钥

        "RewriteObject":
        {
        "kms_key": KMS_KEY_VALUE
        }

        其中,KMS_KEY_VALUE 是要更新的对象的 KMS 密钥的值。

      • 更新对象元数据

        "PutMetadata": {
        METADATA_KEY= METADATA_VALUE,
        ...,
        }

        其中 METADATA_VALUE对象的元数据键值。您可以将一个或多个键值对指定为列表。

      • 更新对象保全

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

        其中:

        • TEMPORARY_HOLD_VALUE 用于启用或停用临时对象保全。值为 1 表示启用保持,值为 2 表示停用保持。

        • EVENT_BASED_HOLD_VALUE 用于启用或停用基于事件的对象保全。值为 1 表示启用保持,值为 2 表示停用保持。

  3. 使用 cURL,通过 POST 存储空间批量操作作业请求调用 JSON API

    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/project=PROJECT_ID/locations/global/jobs?job_id=JOB_ID"

    其中:

    • JSON_FILE_NAME 是 JSON 文件的名称。
    • PROJECT_ID 是项目的 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 describe 命令。

    gcloud storage batch-operations jobs describe JOB_ID

    其中:

    JOB_ID 是存储批量操作作业的名称

REST API

JSON API

  1. 安装并初始化 gcloud CLI,以便为 Authorization 标头生成访问令牌。

  2. 使用 cURL,通过 GET 存储空间批量操作作业请求调用 JSON API

    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 是项目的 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 list 命令。

    gcloud storage batch-operations jobs list

REST API

JSON API

  1. 安装并初始化 gcloud CLI,以便为 Authorization 标头生成访问令牌。

  2. 使用 cURL,通过 LIST 存储空间批量操作作业请求调用 JSON API

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

    其中:

    PROJECT_ID 是项目的 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 是存储批量操作作业的名称

REST API

JSON API

  1. 安装并初始化 gcloud CLI,以便为 Authorization 标头生成访问令牌。

  2. 使用 cURL,通过CANCEL存储空间批量操作作业请求调用 JSON API

    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 是项目的 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 是存储批量操作作业的名称

REST API

JSON API

  1. 安装并初始化 gcloud CLI,以便为 Authorization 标头生成访问令牌。

  2. 使用 cURL,通过DELETE存储空间批量操作作业请求调用 JSON API

    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 是项目的 ID 或编号。例如 my-project

    • JOB_ID 是存储批量操作作业的名称

使用存储空间分析数据集创建存储空间批量操作作业

如需使用存储空间分析数据集创建存储空间批量操作作业,请完成以下部分中的步骤。

使用存储空间分析数据集创建清单

您可以从 BigQuery 中提取数据,为存储批量操作作业创建清单。为此,您需要查询关联的数据集,将生成的数据导出为 CSV 文件,然后将其保存到 Cloud Storage 存储桶。然后,存储空间批量操作作业可以使用此 CSV 文件作为其清单。

在 BigQuery 中对存储空间分析数据集视图运行以下 SQL 查询可检索大于 1 KiB 且名为 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 是存储空间分析数据集视图的完全限定名称,格式为 PROJECT_ID.DATASET_ID.VIEW_NAME。如需查找数据集的名称,请查看关联的数据集

    其中:

    • PROJECT_ID 是项目的 ID 或编号。例如 my-project
    • DATASET_ID 是数据集的名称。例如 objects-deletion-dataset
    • VIEW_NAME 是数据集视图的名称。例如 bucket_attributes_view
  • BUCKET_NAME 是存储桶的名称。例如 my-bucket

  • SNAPSHOT_TIME 是存储空间分析数据集视图的快照时间。例如 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 是以下标志之一,具体取决于作业类型

      • --delete-object:删除一个或多个对象。

      • --put-metadata:更新对象元数据。对象元数据以键值对的形式存储。为您要修改的元数据指定键值对。您可以将一个或多个键值对指定为列表。

      • --rewrite-object:更新一个或多个对象的客户管理的加密密钥

      • --put-object-event-based-hold:启用基于事件的对象保留

      • --no-put-object-event-based-hold:停用基于事件的对象保留

      • --put-object-temporary-hold:启用临时对象保留

      • --no-put-object-temporary-hold:停用临时对象保留

为存储空间批量操作作业使用 Cloud Audit Logs

存储空间批量操作作业会在 Cloud Storage Cloud Audit Logs 中记录对 Cloud Storage 对象的转换。您可以将 Cloud Audit Logs 与 Cloud Storage 搭配使用,跟踪存储批量操作作业执行的对象转换。如需了解如何启用审核日志,请参阅启用审核日志。在审核日志条目中,值为 StorageBatchOperationscallUserAgent 元数据字段表示存储批量操作转换。

后续步骤