我可以看到有一种方法可以使用以下方法更改集合的前缀:
objects = collection.with_prefix('a/').with_prefix('b/', :replace)
objects.prefix #=> 'b/'
问题:如何保存此更改?
我可以看到有一种方法可以使用以下方法更改集合的前缀:
objects = collection.with_prefix('a/').with_prefix('b/', :replace)
objects.prefix #=> 'b/'
问题:如何保存此更改?
您可以使用 AWS::S3::S3Object#move_to 方法在 S3 中的“文件夹”之间移动对象。
bucket.objects.with_prefix('a/').each do |obj|
obj.move_to(obj.key.sub(/^a/, 'b'))
end
AWS::S3::ObjectCollection#with_prefix 上的 :replace 和 :append 参数控制 #with_prefix 如何构建前缀的行为,该前缀将用于在链接时过滤枚举对象。:append 的示例用法可能如下所示:
# enumerates objects inside folder1 / folder2
bucket.objects.with_prefix(folder1).with_prefix(folder2, :append).each do |obj|
end
当然,您可以通过在一次调用#with_prefix 中加入前缀来完成此操作:
# enumerate objects with the prefix 'abc/xyz/'
folder1 = 'abc/'
folder2 = 'xyz/'
bucket.objects.with_prefix("#{folder1}#{folder2}").each do |object|
end
忽略我的回答,如果我不明白你的意思?
您想更改 s3 存储桶中存在的对象的前缀。只有在复制带有新前缀的对象然后删除旧的对象时才有可能。