本页面介绍了如何创建、查看、列出、取消和删除 存储批量操作作业。本文档还介绍了如何将 Cloud Audit Logs 与存储批量操作作业搭配使用。
准备工作
如需创建和管理存储批量操作作业,请完成以下部分中的步骤。
配置 Storage Intelligence
如需创建和管理存储批量操作作业,请在要运行作业的存储桶上配置Storage Intelligence。
设置 Google Cloud CLI
您必须使用 Google Cloud CLI 516.0.0 或更高版本。
设置默认项目
设置要在其中创建存储批量操作作业的项目。
gcloud config set project PROJECT_ID
其中,PROJECT_ID 是项目 ID。
启用 API
启用存储批量操作 API。
gcloud services enable storagebatchoperations.googleapis.com
创建清单
如需使用清单进行对象选择,请创建清单。
创建存储批量操作作业
本部分介绍了如何创建存储批量操作作业。
命令行
-
In the Google Cloud console, 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.
在开发环境中,运行
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是以下标志之一: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:停用临时对象保全。
安装并初始化 gcloud CLI,以便为
Authorization标头生成访问令牌。创建一个包含 存储批量操作作业设置的 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 } }
其中:
JOB_NAME是存储批量操作作业的名称。JOB_DESCRIPTION是存储批量操作作业的说明。BUCKET_NAME是包含一个或多个待处理对象的存储桶的名称。如需指定要处理的对象,请在 JSON 文件中使用以下任一属性:
根据要处理的作业,指定以下任一选项:
删除对象:
"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用于启用或停用临时对象保全。值为1表示启用保全,值为2表示停用保全。EVENT_BASED_HOLD_VALUE用于启用或停用基于事件的对象保全。值为1表示启用保全,值为2表示停用保全。
使用
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/projects/PROJECT_ID/locations/global/jobs?job_id=JOB_ID"
其中:
JSON_FILE_NAME是 JSON 文件的名称。PROJECT_ID是项目的 ID 或编号。例如my-project。JOB_ID是存储批量操作作业的名称。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
REST API
JSON API
获取存储批量操作作业的详细信息
本部分介绍了如何获取存储批量操作作业的详细信息。
命令行
-
In the Google Cloud console, 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.
在开发环境中,运行
gcloud storage batch-operations jobs describe命令。gcloud storage batch-operations jobs describe JOB_ID
其中:
JOB_ID是存储批量操作作业的名称。安装并初始化 gcloud CLI,以便为
Authorization标头生成访问令牌。使用
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是存储批量操作作业的名称。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
REST API
JSON API
列出存储批量操作作业
本部分介绍如何列出项目中的存储批量操作作业。
命令行
-
In the Google Cloud console, 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.
在开发环境中,运行
gcloud storage batch-operations jobs list命令。gcloud storage batch-operations jobs list
安装并初始化 gcloud CLI,以便为
Authorization标头生成访问令牌。使用
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。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
REST API
JSON API
取消存储批量操作作业
本部分介绍如何取消项目中的存储批量操作作业。
命令行
-
In the Google Cloud console, 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.
在开发环境中,运行
gcloud storage batch-operations jobs cancel命令。gcloud storage batch-operations jobs cancel JOB_ID
其中:
JOB_ID是存储批量操作作业的名称。安装并初始化 gcloud CLI,以便为
Authorization标头生成访问令牌。使用
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是存储批量操作作业的名称。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
REST API
JSON API
删除存储批量操作作业
本部分介绍了如何删除存储批量操作作业。
命令行
-
In the Google Cloud console, 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.
在开发环境中,运行
gcloud storage batch-operations jobs delete命令。gcloud storage batch-operations jobs delete JOB_ID
其中:
JOB_ID是存储批量操作作业的名称。安装并初始化 gcloud CLI,以便为
Authorization标头生成访问令牌。使用
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是存储批量操作作业的名称。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
REST API
JSON API
使用存储空间分析数据集创建存储空间批量操作作业
如需使用存储空间分析数据集创建存储批量操作作业,请完成以下部分中的步骤。
使用存储空间分析数据集创建清单
您可以通过从 BigQuery 中提取数据来为存储批量操作作业创建清单。为此,您需要查询关联的数据集,将生成的数据导出为 CSV 文件,然后将其保存到 Cloud Storage 存储桶。然后,存储批量操作作业可以使用此 CSV 文件作为其清单。
在 BigQuery 中对存储空间分析数据集视图运行以下 SQL 查询,可检索名称为 Temp_Training 且大于 1 KiB 的对象:
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。
创建存储批量操作作业
如需创建存储批量操作作业来处理清单中包含的对象,请完成以下步骤:
命令行
-
In the Google Cloud console, 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.
在开发环境中,运行
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:更新对象元数据。对象元数据以键值对的形式存储。指定要修改的元数据的键值对。您可以将一个或多个键值对指定为一个列表。您还可以使用--put-metadata标志提供对象保留配置。--rewrite-object:更新一个或多个对象的客户管理的加密密钥。--put-object-event-based-hold:启用基于事件的对象保全。--no-put-object-event-based-hold:停用基于事件的对象保全。--put-object-temporary-hold:启用临时对象保全。--no-put-object-temporary-hold:停用临时对象保全。
与 VPC Service Controls 集成
您可以使用 VPC Service Controls 为存储空间批量操作资源提供一层额外的安全保障。在使用 VPC Service Controls 时,您可以将项目添加到服务边界,从而防止资源和服务受到源自边界外部的请求的影响。如需详细了解存储批量操作的 VPC Service Controls 服务边界详情,请参阅支持的产品和限制。
将 Cloud Audit Logs 用于存储空间批量操作作业
存储批量操作作业会在 Cloud Storage Cloud Audit Logs 中记录对 Cloud Storage 对象的转换。您可以将 Cloud Audit Logs 与 Cloud Storage 搭配使用,以跟踪存储批量操作作业执行的对象转换。如需了解如何启用审核日志,请参阅启用审核日志。在审核日志条目中,值为 StorageBatchOperations 的 callUserAgent 元数据字段表示存储批量操作转换。