列举对象版本

如果桶开启了版本控制,您可以使用 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的信息。