本页面介绍了如何创建、查看、列出、取消和删除 存储批量操作作业。本文档还介绍了如何将 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 Cloud de Confiance console, activate Cloud Shell.
At the bottom of the Cloud de Confiance 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字段提供空值。例如,gcloud storage batch-operations jobs create my-job --bucket=my-bucket --manifest=manifest.csv --put-metadata=Retain-Until=,Retention-Mode=
- 减小
如果您同时省略
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字段提供空值。例如,gcloud storage batch-operations jobs create my-job --bucket=my-bucket --manifest=manifest.csv --put-metadata=Retain-Until=,Retention-Mode=
- 减小
如果您同时省略
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 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将
GOOGLE_CLOUD_UNIVERSE_DOMAIN环境变量设置为s3nsapis.fr。PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将
GOOGLE_CLOUD_UNIVERSE_DOMAIN环境变量设置为s3nsapis.fr。REST API
JSON API
获取存储批量操作作业的详细信息
本部分介绍了如何获取存储批量操作作业的详细信息。
命令行
-
In the Cloud de Confiance console, activate Cloud Shell.
At the bottom of the Cloud de Confiance 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 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
REST API
JSON API
列出存储批量操作作业
本部分介绍如何列出项目中的存储批量操作作业。
命令行
-
In the Cloud de Confiance console, activate Cloud Shell.
At the bottom of the Cloud de Confiance 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 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
REST API
JSON API
取消存储批量操作作业
本部分介绍如何取消项目中的存储批量操作作业。
命令行
-
In the Cloud de Confiance console, activate Cloud Shell.
At the bottom of the Cloud de Confiance 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 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
REST API
JSON API
删除存储批量操作作业
本部分介绍了如何删除存储批量操作作业。
命令行
-
In the Cloud de Confiance console, activate Cloud Shell.
At the bottom of the Cloud de Confiance 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 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
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 Cloud de Confiance console, activate Cloud Shell.
At the bottom of the Cloud de Confiance 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 元数据字段表示存储批量操作转换。