复制对象
copy_object 操作用于创建一个已经在媒体存储中的对象。使用 copy_object 可以拷贝单个最大为5GB的对象,如果需要拷贝更大的对象,可以使用 upload_part_copy 操作。执行 copy_object 操作,必须具有对被拷贝对象的READ权限和对目标bucket的WRITE权限。
拷贝生成的对象默认保留原对象的元数据信息,也可以在 copy_object 操作中指定新的元数据。但是拷贝生成的对象不会保留原来的ACL信息,该对象默认是发起 copy_object 操作的用户私有的。
以下代码展示如何复制一个对象:
def copy_object(client, src_bucket, src_obj_key, dest_bucket, dest_obj_key)
client.copy_object(
bucket: dest_bucket,
copy_source: "/#{src_bucket}/#{src_obj_key}",
key: dest_obj_key
)
puts 'Object copied.'
rescue StandardError => e
puts "Error copying objects: #{e.message}"
end
copy_object可设置的部分参数如下:
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
acl | String | 拷贝后对象的预定义的标准ACL信息,例如private,public-read,public-read-write等。 | 否 |
bucket | String | 存放拷贝生成对象的桶名称。 | 是 |
copy_source | String | URL格式的拷贝对象数据来源,包含了桶名称和对象key的信息,二者之间使用正斜杆(/)分割,versionId可选参数用于指定原对象的版本。例如,“foo/boo?versionId=11111"表示拷贝foo桶中的boo对象,其版本id为11111。如果不指定versionId参数,则默认拷贝当前版本的对象数据。 | 是 |
grant_full_control | String | 用于为用户配置被拷贝对象的FULL_CONTROL权限信息。 | 否 |
grant_read | String | 用于为用户配置被拷贝对象的READ权限信息。 | 否 |
grant_read_acp | String | 用于为用户配置被拷贝对象的READ_ACP权限信息。 | 否 |
grant_write_acp | String | 用于为用户配置被拷贝对象的WRITE_ACP权限信息。 | 否 |
key | String | 拷贝生成对象对应的key。 | 是 |
metadata | Hash<String,String> | 拷贝生成对象的元数据信息。 | 否 |
metadata_directive | String | 指定拷贝生成的对象的元数据信息来自被拷贝对象,还是来自请求中附带的信息。 | 否 |