本页面介绍如何对存储桶启用、停用对象版本控制和检查其状态。请参阅使用具有版本控制的对象,了解如何列出、恢复和删除对象版本控制保留的对象。
所需的角色
如需获得在存储桶上设置和管理对象版本控制所需的权限,请让管理员向您授予存储桶或包含存储桶的项目的 Storage Admin (roles/storage.admin
) IAM 角色。此预定义角色可提供设置和管理存储桶的对象版本控制所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.buckets.get
storage.buckets.update
storage.buckets.list
- 仅当您计划使用 Google Cloud 控制台执行本页面上的任务时,才需要此权限。
您也可以使用自定义角色来获取这些权限。
如需了解如何授予存储桶的角色,请参阅将 IAM 与存储桶搭配使用。如需了解如何授予项目的角色,请参阅管理对项目的访问权限。
在存储桶上设置对象版本控制
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击要启用或停用对象版本控制的存储桶的名称。
选择页面顶部附近的保护标签页。
您可以在对象版本控制部分找到对象版本控制的当前状态。
在对象版本控制部分,点击当前状态以进行更改。
此时会显示对象版本控制对话框。
- 如果您要启用对象版本控制,并且希望最大限度地降低存储费用,请选中添加建议的生命周期规则以管理版本费用复选框。
点击确认。
命令行
使用带有相应标志的 gcloud storage buckets update
命令:
gcloud storage buckets update gs://BUCKET_NAME FLAG
其中:
BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。FLAG
可以为--versioning
以启用对象版本控制,或者为--no-versioning
以停用对象版本控制。
如果成功,响应类似于以下示例:
Updating gs://my-bucket/... Completed 1
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会在存储桶上启用对象版本控制:
以下示例会在存储桶上停用对象版本控制:
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会在存储桶上启用对象版本控制:
以下示例会在存储桶上停用对象版本控制:
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会在存储桶上启用对象版本控制:
以下示例会在存储桶上停用对象版本控制:
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会在存储桶上启用对象版本控制:
以下示例会在存储桶上停用对象版本控制:
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会在存储桶上启用对象版本控制:
以下示例会在存储桶上停用对象版本控制:
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会在存储桶上启用对象版本控制:
以下示例会在存储桶上停用对象版本控制:
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会在存储桶上启用对象版本控制:
以下示例会在存储桶上停用对象版本控制:
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
以下示例会在存储桶上启用对象版本控制:
以下示例会在存储桶上停用对象版本控制:
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。创建一个包含以下信息的 JSON 文件:
{ "versioning": { "enabled": STATE } }
其中 STATE 为
true
或false
。使用
cURL
通过PATCH
Bucket 请求调用 JSON API:curl -X PATCH --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=versioning"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的 JSON 文件的路径。BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。
XML API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。创建一个包含以下信息的 XML 文件:
<VersioningConfiguration> <Status>STATE</Status> </VersioningConfiguration>
其中 STATE 为
Enabled
或Suspended
。使用
cURL
,通过PUT
Bucket 请求和versioning
查询字符串参数调用 XML API:curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?versioning"
其中:
XML_FILE_NAME
是您在第 2 步中创建的 XML 文件的路径。BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。
启用对象版本控制后,每次替换或删除有效对象版本时,该版本都将成为非当前版本。
检查是否启用了对象版本控制
如需检查存储桶是否启用了对象版本控制,请执行以下操作:
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,您可以在保护列中找到每个存储桶的对象版本控制状态。
如果已启用此选项,就会显示文本对象版本控制。
命令行
使用带有 --format
标志的 gcloud storage buckets describe
命令:
gcloud storage buckets describe gs://BUCKET_NAME --format="default(versioning)"
其中,BUCKET_NAME
是您要查看其状态的存储桶的名称,例如 my-bucket
。
如果成功并且已启用对象版本控制,则响应类似于以下示例:
versioning: enabled: true
如果成功并且未启用对象版本控制,则响应将类似于以下示例:
null
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
通过GET
Bucket 请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=versioning"
其中
BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。
如果成功并且已启用对象版本控制,则响应类似于以下示例:
{ "versioning": { "enabled": true } }
如果成功并且未启用对象版本控制,则响应将类似于以下示例:
{}
XML API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过GET
Bucket 请求和versioning
查询字符串参数调用 XML API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME?versioning"
其中
BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。
如果成功并且已启用对象版本控制,则响应类似于以下示例:
<VersioningConfiguration>
<Status>Enabled</Status>
</VersioningConfiguration>
如果成功并且未启用对象版本控制,则响应将类似于以下示例:
<VersioningConfiguration/>
后续步骤
- 详细了解对象版本控制。
- 了解如何使用非当前对象。
- 了解如何使用对象生命周期管理自动管理对象版本。
- 了解如何使用请求前提条件来防止出现竞争条件。