列举对象版本
如果桶开启了版本控制,您可以使用 list_object_versions 接口列举桶内所有对象版本的元数据,要使用此操作,您必须对存储桶具有READ访问权限。 您还可以使用请求参数作为筛选标准,以返回桶内部分对象的版本。
以下代码返回具有特定key前缀的对象的版本:
def list_object_versions(client, bucket_name, prefix)
resp = client.list_object_versions(
bucket: bucket_name,
prefix: prefix
)
puts JSON.pretty_generate(resp.to_h)
rescue StandardError => e
puts "Error in listing object versions: #{e.message}"
end
list_object_versions 可设置的参数如下:
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
bucket | String | 查询版本信息的对象所在的桶的名称。 | 是 |
delimiter | String | 与prefix参数一起用于对对象key进行分组的字符。所有key包含指定的prefix且第一次出现delimiter字符之间的对象作为一组。如果没有指定prefix参数,按delimiter对所有对象key进行分割,多个对象分割后从对象key开始到第一个delimiter之间相同的部分形成一组。 | 否 |
encoding_type | String | 用于设置response中object key的字符编码类型。 | 否 |
key_marker | String | 指定一个标识符,返回的对象的key将是按照字典顺序排序后位于该标识符之后的所有对象。 | 否 |
max_keys | Integer | 设置response中返回对象key的数量,默认值和最大值均为1000。 | 否 |
prefix | String | 限定返回对象的key必须以prefix作为前缀。 | 否 |
version_id_marker | String | 指定要从其开始列出的对象版本。 | 否 |
list_object_versions 返回的属性如下:
属性名 | 类型 | 说明 |
---|---|---|
common_prefixes | Array<Types::CommonPrefix> | 当请求中设置了delimiter和prefix属性时,所有包含指定的prefix且第一次出现delimiter字符的对象key作为一组。 |
delete_markers | Array<Types::DeleteMarkerEntry> | 对象删除标记信息数组,数组中每一项包含了是否为最新版本、对象key、最新修改时间、拥有者和版本Id等信息。 |
delimiter | String | 与请求中设置的delimiter一致。 |
encoding_type | String | 返回对象key的字符编码类型。 |
is_truncated | Boolean | 当为false时表示返回结果中包含了全部符合本次请求查询条件的对象版本信息,否则只返回了max_keys个对象版本信息。 |
key_marker | String | 与请求中设置的key_marker一致。 |
max_keys | Integer | 本次返回结果中包含的对象版本信息数量的最大值。 |
name | String | 执行本操作的桶名称。 |
next_key_marker | String | 当返回结果中的is_truncated为true时,可以使用next_key_marker作为下次查询请求中的key_marker,继续查询出下一部分的对象版本信息。 |
next_version_id_marker | String | 本次查询返回的最后一个对象版本id。 |
prefix | String | 与请求中设置的prefix一致。 |
versions | Array<Types::ObjectVersion> | 对象版本信息的数组,数组中每一项包含了对象的Entity Tag、是否为最新版本、对象key、最新修改时间、拥有者、大小、存储类型和版本Id的信息。 |