如何通过ruby aws-sdk回滚到s3上以前版本的已删除文件的任何示例?
看起来GEM aws-sdk-ruby没有在对象列表中显示已删除的文件
s3 = Aws::S3::Resource.new
bucket = s3.bucket('aws-sdk')
bucket.objects.each do |obj|
if obj.key.start_with?("images/file_name.jpg")
puts obj.to_yaml
end
end
答案 0 :(得分:0)
您可以像这样列出以前的版本:
aws_versions = s3.client.list_object_versions(
bucket: 'bucket_name',
prefix: 'images/12345/50x50.jpg'
).versions
下载这样的必要版本:
cache = s3.client.get_object(
bucket: 'bucket_name',
key: 'images/12345/50x50.jpg',
version_id: 'your_version_id',
response_target: Rails.root.join('tmp/images/12345/50x50.jpg')
)
https://docs.aws.amazon.com/sdk-for-ruby/v2/api/Aws/S3/Client.html#get_object-instance_method
最后,将其保存到您的模型中:
model.attachment = Rails.root.join('tmp/images/12345/50x50.jpg').open
model.save
PS:最好安装paper_trail,因此您可以在模型更改历史记录中找到以前的版本前缀(images/12345/50x50.jpg
部分)。