本页面介绍了如何列出、访问、恢复和删除非当前对象,这通常适用于启用了对象版本控制功能的存储桶。
所需的角色
如需获得管理非当前对象所需的权限,请让管理员向您授予项目的 Storage Object User (roles/storage.objectUser
) IAM 角色。此预定义角色包含管理非当前对象所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
您也可以使用自定义角色来获取这些权限。
如需了解如何授予项目的角色,请参阅管理对项目的访问权限。
根据您的使用场景,您可能需要更多权限或其他角色:
如果您计划使用 Trusted Cloud 控制台执行本页面上的任务,则还需要
storage.buckets.list
权限,Storage Object User (roles/storage.objectUser
) 角色不提供此权限。如需获得此权限,请让您的管理员为您授予项目的 Storage Admin (roles/storage.admin
) 角色。如果为存储桶停用了统一存储桶级访问权限,则在以下情况下,您还需要其他权限:
如果您计划返回非当前对象及其 ACL,则还需要
storage.objects.getIamPolicy
权限,该权限未包含在 Storage Object User (roles/storage.objectUser
) 角色中。如需获得此权限,请让管理员为您授予项目的 Storage Object Admin (roles/storage.objectAdmin
) 角色。如果您计划重命名或恢复具有 ACL 的非当前对象,则还需要
storage.objects.setIamPolicy
权限,该权限未包含在 Storage Object User (roles/storage.objectUser
) 角色中。如需获得此权限,请让管理员为您授予项目的 Storage Object Admin (roles/storage.objectAdmin
) 角色。
列出非当前对象版本
如需列出对象的当前版本和非当前版本,并查看它们的 generation
编号,请执行以下操作:
控制台
- 在 Trusted Cloud 控制台中,转到 Cloud Storage 存储桶页面。
在存储桶列表中,点击包含所需对象的存储桶的名称。
此时会打开“存储桶详情”页面,其中“对象”标签页已选中。
如需查看非当前对象,请点击显示下拉菜单,然后选择当前对象和非当前对象。
在对象列表中,点击要查看其版本的对象的名称。
此时会打开对象详情页面,其中实时对象标签页已选中。
点击版本历史记录标签页以查看对象的所有版本。
命令行
使用 gcloud storage ls --all-versions
命令:
gcloud storage ls --all-versions gs://BUCKET_NAME
其中 BUCKET_NAME
是包含对象的存储桶的名称。例如 my-bucket
。
响应如下例所示:
gs://BUCKET_NAME/OBJECT_NAME1#GENERATION_NUMBER1 gs://BUCKET_NAME/OBJECT_NAME2#GENERATION_NUMBER2 gs://BUCKET_NAME/OBJECT_NAME3#GENERATION_NUMBER3 ...
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过 Objects: list 请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/o?versions=true"
其中
BUCKET_NAME
是包含对象的存储桶的名称。例如my-bucket
。
对象非当前版本具有 timeDeleted
属性。
XML API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过GET
Bucket 请求和versions
查询字符串参数调用 XML API:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/BUCKET_NAME?versions&list-type=2"
其中
BUCKET_NAME
是包含对象的存储桶的名称。例如my-bucket
。
与不使用 versions
查询参数相比,在使用该查询参数时,GET
请求的结果存在一些差异。具体而言,当您在请求中包含 versions
查询参数时,Cloud Storage 会返回以下信息:
Version
元素(包含每个对象的相关信息)。DeletedTime
元素(包含对象版本成为非当前版本(删除或替换)的时间)。- IsLatest 元素(指示特定对象是否为最新版本)。
- 如果对象列出操作仅列出部分对象(当存储桶中包含许多对象版本时,会发生此情况),则会返回
NextGenerationMarker
元素。在后续请求的generationmarker
查询参数中使用此元素的值,以便从上次的截止点继续。generationmarker
查询参数的使用方式与marker
查询参数相同,用于为非版本化存储桶的列表结果分页。
访问非当前对象版本
如需在执行下载对象、查看其元数据或更新其元数据等任务时使用非当前对象版本,请执行以下操作:
控制台
Trusted Cloud 控制台不提供对非当前版本的常规访问权限。使用 Trusted Cloud 控制台时,您只能移动、复制、恢复或删除非当前版本。这些操作是从对象的版本记录列表中执行的。
命令行
将非当前版本的世代编号附加到对象名称:
OBJECT_NAME#GENERATION_NUMBER
其中:
OBJECT_NAME
是非当前版本的名称,例如pets/dog.png
。GENERATION_NUMBER
是非当前版本的世代编号,例如1560468815691234
。
使用上一步中的字符串,按照对象现行版本的正常方式继续操作。例如,如需查看非当前对象版本的元数据,请使用
gcloud storage objects describe
命令:gcloud storage objects describe gs://my-bucket/pets/dog.png#1560468815691234
REST API
JSON API
将非当前版本的世代编号附加到对象的 URI:
https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?generation=GENERATION_NUMBER
其中:
BUCKET_NAME
是包含非当前版本的存储桶的名称,例如my-bucket
。OBJECT_NAME
是非当前版本的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。GENERATION_NUMBER
是非当前版本的世代编号,例如1560468815691234
。
使用上一步中的 URI,按照对象现行版本的正常方式继续操作。例如,如需查看非当前对象版本的元数据,请使用 cURL 在对象:获取请求中调用 JSON API:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/storage/v1/b/my-bucket/o/pets/dog.png?generation=1560468815691234"
XML API
将非当前版本的世代编号附加到对象的 URI:
https://storage.s3nsapis.fr/BUCKET_NAME/OBJECT_NAME?generation=GENERATION_NUMBER
其中:
BUCKET_NAME
是包含非当前版本的存储桶的名称,例如my-bucket
。OBJECT_NAME
是非当前版本的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。GENERATION_NUMBER
是非当前版本的世代编号,例如1560468815691234
。
使用上一步中的 URI,按照对象现行版本的正常方式继续操作。例如,如需查看非当前对象版本的元数据,请使用
cURL
在HEAD
对象请求中调用 XML API:curl -I GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/my-bucket/pets/dog.png?generation=1560468815691234"
恢复非当前对象版本
在 Cloud Storage 中,恢复非当前对象版本意味着创建该版本的副本。执行此操作后,副本会成为当前版本,从而有效地恢复版本。如果已有当前版本并且存储桶启用了对象版本控制,则恢复非当前版本会导致之前存在的当前版本变为非当前版本。
控制台
- 在 Trusted Cloud 控制台中,转到 Cloud Storage 存储桶页面。
在存储桶列表中,点击包含所需对象的存储桶的名称。
此时会打开“存储桶详情”页面,其中“对象”标签页已选中。
如需查看非当前对象,请点击显示下拉菜单,然后选择当前对象和非当前对象。
在对象列表中,点击要恢复的对象版本的名称。
此时会打开对象详情页面,其中实时对象标签页已选中。
点击版本历史记录标签页。
点击所需版本的恢复按钮。
此时会打开恢复对象版本窗格。
点击确认。
命令行
使用 gcloud storage cp
命令:
gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER gs://BUCKET_NAME
其中:
BUCKET_NAME
是包含要恢复的非当前版本的存储桶的名称。例如my-bucket
。OBJECT_NAME
是要恢复的非当前版本的名称。例如pets/dog.png
。GENERATION_NUMBER
是要恢复的非当前版本的世代编号,例如1560468815691234
。
如果成功,则响应类似如下示例:
Operation completed over 1 objects/58.8 KiB.
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过POST
Object 请求调用 JSON API:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Length: 0" \ "https://storage.s3nsapis.fr/upload/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME/rewriteTo/b/BUCKET_NAME/o/OBJECT_NAME?sourceGeneration=GENERATION_NUMBER"
其中:
BUCKET_NAME
是包含要恢复的非当前版本的存储桶的名称。例如my-bucket
。OBJECT_NAME
是要恢复的非当前版本的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。GENERATION_NUMBER
是要恢复的非当前版本的世代编号,例如1560468815691234
。
XML API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过PUT
Object 请求调用 XML API:curl -X PUT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-copy-source: BUCKET_NAME/OBJECT_NAME" \ -H "x-goog-copy-source-generation:GENERATION_NUMBER" \ "https://storage.s3nsapis.fr/BUCKET_NAME/OBJECT_NAME"
其中:
BUCKET_NAME
是包含要恢复的非当前版本的存储桶的名称。例如my-bucket
。OBJECT_NAME
是要恢复的非当前版本的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。GENERATION_NUMBER
是要恢复的非当前版本的世代编号,例如1560468815691234
。
恢复对象版本后,原始非当前版本仍存在于存储桶中。如果您不再需要非当前版本,可以随后将其删除或配置对象生命周期管理,以便在其符合您指定的条件时将其移除。
删除非当前对象版本
控制台
- 在 Trusted Cloud 控制台中,转到 Cloud Storage 存储桶页面。
在存储桶列表中,点击包含所需对象的存储桶的名称。
此时会打开“存储桶详情”页面,其中“对象”标签页已选中。
如需查看非当前对象,请点击显示下拉菜单,然后选择当前对象和非当前对象。
导航到可能位于文件夹中的对象。
在对象列表中,点击要删除其版本的对象的名称。
此时会打开对象详情页面,其中实时对象标签页已选中。
点击版本历史记录标签页。
选中所需版本对应的复选框。
点击删除按钮。
此时会打开删除版本窗格。
在文本字段中输入
delete
,以确认您要删除该对象。点击删除。
命令行
使用 gcloud storage rm
命令:
gcloud storage rm gs://BUCKET_NAME/OBJECT_NAME#GENERATION_NUMBER
其中:
BUCKET_NAME
是包含要删除的非当前版本的存储桶的名称,例如my-bucket
。OBJECT_NAME
是要删除的非当前版本的名称,例如pets/dog.png
。GENERATION_NUMBER
是要删除的非当前版本的世代编号,例如1560468815691234
。
如果成功,则响应类似如下示例:
Operation completed over 1 objects.
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN
环境变量设置为 s3nsapis.fr
。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过DELETE
Object 请求调用 JSON API:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?generation=GENERATION_NUMBER"
其中:
BUCKET_NAME
是包含要删除的非当前版本的存储桶的名称,例如my-bucket
。OBJECT_NAME
是要删除的非当前版本的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。GENERATION_NUMBER
是要删除的非当前版本的世代编号,例如1560468815691234
。
XML API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
,通过DELETE
Object 请求调用 XML API:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.s3nsapis.fr/BUCKET_NAME/OBJECT_NAME?generation=GENERATION_NUMBER"
其中:
BUCKET_NAME
是包含要删除的非当前版本的存储桶的名称,例如my-bucket
。OBJECT_NAME
是要删除的非当前版本的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。GENERATION_NUMBER
是要删除的非当前版本的世代编号,例如1560468815691234
。
后续步骤
- 详细了解对象版本控制,包括一个深度示例。
- 对存储桶启用或停用对象版本控制。
- 了解如何使用对象生命周期管理自动管理对象版本。