版本控制

通过媒体存储提供的版本控制,您可以在一个桶中保留多个对象版本。您必须在您的存储桶上显式启用版本控制。默认情况下,版本控制处于禁用状态。无论您是否已启用版本控制,您的存储桶中的每个对象都具有版本 ID。如果未启用版本控制,则版本 ID 值被设置为空(null)。如果已启用版本控制,则对象会被指定唯一版本 ID 值。在存储桶上启用版本控制时,该存储桶中的现有对象(如果有)不会发生更改:版本ID(空)、内容和权限保持为相同。

设置版本控制信息

put_bucket_versioning 操作可以设置存储桶版本控制状态。存储桶的版本控制状态可以设置为以下的值:

  • Enabled:对存储桶中的所有对象启用版本控制,之后每个添加到存储桶中的对象都会被设置一个唯一的版本 ID。
  • Suspended:关闭存储桶的版本控制,之后每个添加到bucket中的对象的版本 ID会被设置为null。

容器开启版本控制功能之后,无法再关闭该功能,只能暂停。

以下代码展示如何开启版本控制:

def put_bucket_versioning(client, bucket_name)
  client.put_bucket_versioning(
    bucket: bucket_name,
    versioning_configuration: {
      status: 'Enabled'
    }
  )
  puts 'Bucket versioning set.'
rescue StandardError => e
  puts "Error putting bucket versioning: #{e.message}"
end

获取版本控制信息

get_bucket_versioning 操作可以获取存储桶的版本控制状态信息。只有存储桶的拥有者才能获取到版本控制信息。如果存储桶从来没有被设置过版本控制状态,那么该存储桶不含有任何版本控制的状态信息,执行 get_bucket_versioning 操作不能获取版本控制信息的有效值。

以下代码展示如何查询版本控制信息:

def get_bucket_verisoning(client, bucket_name)
  resp = client.get_bucket_versioning(
    bucket: bucket_name
  )
  puts "Bucket verisoning status: #{resp.status}."
rescue StandardError => e
  puts "Error getting bucket versioning: #{e.message}"
end