[英]How I can rollback to previous version of deleted file on s3 via ruby aws-sdk
任何示例如何通过 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
您可以像这样列出以前的版本:
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
部分)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.