Rails PaperClip:如何将 public_read 文件转换为私人文件?
Rails PaperClip: How can you convert a public_read file to private?
我最近将回形针上传切换为使用 :s3_permissions => :private
https://github.com/thoughtbot/paperclip/wiki/Restricting-Access-to-Objects-Stored-on-Amazon-S3
所有新上传的内容现在都是安全且私密的。
现在我正在尝试保护所有以前上传的内容。
是否有可能触发一个过程,该过程将重新上传为 amazon S3 安全?
更新所有对象的权限比重新上传它们要容易得多。
我能想到的两种方法:
Paperclip 有一个使用 s3 存储的附件的 set_permissions
方法,因此您可以循环遍历现有模型并在每条记录上调用类似 user.avatar.set_permissions(:private)
的方法.
s3cmd 之类的工具也很适合完成此任务。安装后,像这样的命令就可以做到:
s3cmd setacl --acl-private --recursive --verbose s3://your_bucket/paperclip/path
更新:set_permissions
与您想象的不同;它在创建对象时使用但不更新对象。相反,使用回形针 s3_object
方法,然后使用 aws-sdk api:
更新对象
user.avatar.s3_object.acl.put(acl: 'private')
我最近将回形针上传切换为使用 :s3_permissions => :private
https://github.com/thoughtbot/paperclip/wiki/Restricting-Access-to-Objects-Stored-on-Amazon-S3
所有新上传的内容现在都是安全且私密的。
现在我正在尝试保护所有以前上传的内容。
是否有可能触发一个过程,该过程将重新上传为 amazon S3 安全?
更新所有对象的权限比重新上传它们要容易得多。
我能想到的两种方法:
Paperclip 有一个使用 s3 存储的附件的set_permissions
方法,因此您可以循环遍历现有模型并在每条记录上调用类似user.avatar.set_permissions(:private)
的方法.s3cmd 之类的工具也很适合完成此任务。安装后,像这样的命令就可以做到:
s3cmd setacl --acl-private --recursive --verbose s3://your_bucket/paperclip/path
更新:set_permissions
与您想象的不同;它在创建对象时使用但不更新对象。相反,使用回形针 s3_object
方法,然后使用 aws-sdk api:
user.avatar.s3_object.acl.put(acl: 'private')