列出启用版本控制的存储桶中的对象
此部分提供从启用版本控制的存储桶列出对象版本的示例。Amazon S3 将对象版本信息存储在与存储桶关联的 versions 子资源中。有关更多信息,请参阅 存储桶配置选项。要列出已启用版本控制的存储桶中的对象,您需要 ListBucketVersions
权限。
请按照以下步骤使用 Amazon S3 控制台查看对象的不同版本。
查看对象的多个版本
登录到 AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/
。 -
在存储桶列表中,请选择包含对象的存储桶的名称。
-
要查看存储桶中对象的版本列表,请选择显示版本开关。
控制台会显示每个对象版本的唯一版本 ID、对象版本的创建日期和时间以及其他属性。(在您设置版本控制状态之前存储在存储桶中的对象具有版本 ID null。)
要列出没有版本的对象,请选择 List versions (列出版本) 开关。
您也可以在控制台中的对象概述面板中查看、下载和删除对象版本。有关更多信息,请参阅 在 Amazon S3 控制台中查看对象属性。
注意
要访问早于 300 个版本的对象版本,必须使用 AWS CLI 或对象的 URL。
重要
仅当对象已作为最新(当前)版本删除时,您才能取消删除它。您无法取消删除已删除对象的早期版本。有关更多信息,请参阅 使用 S3 版本控制保留对象的多个版本。
此部分中的示例说明了如何从启用了版本控制的存储桶中检索对象列表。每个请求最多返回 1000 个版本,除非您指定一个较小的数字。如果存储桶包含的版本数超过此限制,请发送一系列请求来检索所有版本的列表。以“页面”形式返回结果的过程称为分页。
为了说明分页的工作原理,该示例将每个响应限制为两个对象版本。在检索第一页结果后,每个示例将检查以确定版本列表是否已被截断。如果是,示例将继续检索页面,直至检索到所有版本。
注意
以下示例还使用未启用版本控制的存储桶或用于没有单独版本的对象。在这些情况下,Amazon S3 将返回版本 ID 为 null
的对象列表。
有关使用其他 AWS SDK 的信息,请参阅 AWS 开发人员中心
例 — 列出存储桶中的所有对象版本
要列出存储桶中所有对象的所有版本,请在 versions
请求中使用 GET Bucket
子资源。Amazon S3 最多能检索 1000 个对象,且每个对象版本都将计为一个完整的对象。因此,如果存储桶包含两个键(例如 photo.gif
和 picture.jpg
),并且第一个键有 990 个版本,第二个键有 400 个版本,则单个请求将检索 photo.gif
的所有 990 个版本,另加 picture.jpg
的最近 10 个版本。
Amazon S3 将按照存储的顺序返回对象版本,最先返回最近存储的版本。
在 GET Bucket
请求中,包含 versions
子资源。
GET /?versions HTTP/1.1 Host:
bucketName
.s3.amazonaws.com Date: Wed, 28 Oct 2009 22:32:00 +0000 Authorization: AWSAKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
例 — 检索键的所有版本
要检索对象版本的子集,请为 GET
Bucket
使用请求参数。有关更多信息,请参阅 GET Bucket。
-
将
prefix
参数设置为您要检索的对象的键。 -
使用
GET Bucket
子资源和versions
发送prefix
请求。GET /?versions&prefix=objectName HTTP/1.1
例 — 使用前缀检索对象
以下示例将检索其键是 myObject
或由它开头的对象。
GET /?versions&prefix=myObject HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Wed, 28 Oct 2009 22:32:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
您可以使用其他请求参数来检索对象的所有版本的子集。有关更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 GET Bucket。
例 — 在响应截断时检索其他对象的列表
如果可以在 GET
请求中返回的对象数量超过 max-keys
的值,则响应将包含 <isTruncated>true</isTruncated>
,并包含满足该请求但不会返回的第一个键 (在 NextKeyMarker
中) 和第一个版本 ID (在 NextVersionIdMarker
中)。您可以在后续请求中将这些返回的值用作开始位置,以检索满足 GET
请求的其他对象。
使用以下过程从存储桶中检索满足原始 GET Bucket versions
请求的其他对象。有关 key-marker
、version-id-marker
、NextKeyMarker
和 NextVersionIdMarker
的更多信息,请参阅《Amazon Simple Storage Service API 参考》中的 GET
Bucket。
以下是满足原始 GET
请求的其他响应:
-
将
key-marker
的值设置为在上一个响应中的NextKeyMarker
中返回的键。 -
将
version-id-marker
的值设置为在上一个响应中的NextVersionIdMarker
中返回的版本 ID。 -
使用
GET Bucket versions
和key-marker
发送version-id-marker
请求。
例 — 检索以指定的键和版本 ID 开始的对象
GET /?versions&key-marker=myObject&version-id-marker=298459348571 HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Wed, 28 Oct 2009 22:32:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
以下命令返回有关存储桶中的对象的所有版本的元数据。
aws s3api list-object-versions --bucket
amzn-s3-demo-bucket1
有关 list-object-versions
的更多信息,请参阅《AWS CLI 命令参考》中的 list-object-versions。