如何在上传过程中为amazon S3存储桶中的某些特定文件提供公共访问权限?

时间:2017-04-18 15:16:57

标签: ruby-on-rails amazon-web-services amazon-s3

目前我正在使用S3存储桶上传一些pdf。

现在这些pdf都不能通过url直接访问。但我想在上传期间公开一些特定的pdf文件。

我已经离开了this博客,该博客解释了如何公开所有资源。但我不希望这样,我希望在上传过程中只公开几个特定文件。

目前我正在使用ruby aws-sdk。我想知道这可能吗?

1 个答案:

答案 0 :(得分:1)

由于您没有粘贴您使用的任何特定代码段,我假设您尝试使用官方AWS Ruby SDK

来实现此目的
File.open('/source/file/path', 'rb') do |file|
  s3.put_object(bucket: 'bucket-name', key: 'object-key', body: file)
end

默认情况下,任何上传的文件都是私有的,因此无法通过网址访问。

如果您想将其公开,则需要设置其他参数:acl: "public-read"。默认情况下,所有AWS开发工具包都使用ACL private。所以修改我的上一个例子,它看起来像:

File.open('/source/file/path', 'rb') do |file|
  s3.put_object(acl: "public-read", bucket: 'bucket-name', key: 'object-key', body: file)
end

现在您应该可以通过网址访问您的文件了。

您可以在此处阅读有关S3上的固定ACL的更多信息:http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl