Rails PaperClip:如何将public_read文件转换为私有?

时间:2017-09-07 00:14:26

标签: ruby-on-rails amazon-s3 paperclip

我最近切换了回形针上传内容以使用:s3_permissions => :private

https://github.com/thoughtbot/paperclip/wiki/Restricting-Access-to-Objects-Stored-on-Amazon-S3

现在所有新上传内容都是安全且私密的。

现在我正在尝试保护之前的所有上传内容。

是否可以通过亚马逊S3触发将重新上传为安全的流程?

1 个答案:

答案 0 :(得分:1)

更新所有对象的权限而不是重新上传它们要容易得多。

我可以想到两种方法:

  1. Paperclip具有使用s3存储的附件的set_permissions方法,因此您可以遍历现有模型并在每条记录上调用类似user.avatar.set_permissions(:private)的东西。 < / p>

  2. 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')