amazon-s3 - 关于 Amazon S3 中的签名 URL

标签 amazon-s3 ruby-on-rails-3.1

所以我一直在阅读有关签名 URL 及其一些好处的内容。特别是关于热链接的部分。我们的应用程序不允许用户嵌入我们网站上的媒体(照片、视频、音频)。所以签名的 URL 看起来是正确的方向。主要是为了防止盗链。

现在我知道了我的要求。我有几个问题。

  1. 这是否意味着我必须向我的存储桶添加一项策略,拒绝对存储桶中的任何文件或文件夹进行读写访问?
  2. 我是否必须为每次页面访问创建签名 URL?假设 100 个用户访问可以播放歌曲的同一页面。这是否意味着我必须创建 100 个签名 URL?
  3. 创建 S3 签名网址是免费的吗?

触及第 2 点。 Amazon S3 创建多个签名 URL 是正常做法吗?我的意思是,如果 1,000 个用户最终访问同一歌曲页面会发生什么..

你的想法?

引用:

对于任何对我如何生成签名网址感兴趣的人。基于https://github.com/appoxy/aws gem 和文档位于 http://rubydoc.info/gems/aws/2.4.5/frames :

s3 = Aws::S3.new(APP_CONFIG['amazon_access_key_id'], APP_CONFIG['amazon_secret_access_key'])
bucket_gen = Aws::S3Generator::Bucket.create(s3, 'bucket_name')
signed_url = bucket_gen.get(URI.unescape(URI.parse(URI.escape('http://bucket_name.s3.amazonaws.com/uploads/foobar.mp3')).path[1..-1]), 1.hour)

最佳答案

  1. 默认情况下,您的存储桶将设置为私有(private)。当您将文件上传到 S3 时,您可以设置 ACL(权限) - 根据您的情况,您需要确保文件是私有(private)的。

  2. 最简单的解决方案是为每个访问者创建新的签名网址。您可以做一些事情,比如每天生成新的网址,将它们存储在某个地方,然后使用它们,但这会增加复杂性,但没有什么好处。不过,您可能需要此功能的地方也是启用客户端缓存。每次您创建新的 URL 时,浏览器都会将其视为不同的文件并下载新的副本。如果这不是您想要的行为,您需要生成在很远的将来就会过期的网址并重复使用它们 - 但这会降低防止热链接的有效性。

  3. 是的,生成网址是免费的。它们是在客户端生成的,不涉及 S3。我认为存在时间/处理成本,但我创建了包含每次访问时生成的数百个网址的页面,并且没有注意到任何性能问题。

关于amazon-s3 - 关于 Amazon S3 中的签名 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7771183/

相关文章:

sql - Redshift Copy 创建与分析不同的压缩编码

ruby-on-rails-3.1 - 如何将字符串转换为数组

java - 用于基于浏览器的帖子的 Java AWS4 签名

scala - Hadoop 中的快速递归文件夹删除

javascript - 精细上传到 S3 文件夹

ruby-on-rails-3.1 - 从 Heroku Bamboo 堆栈升级到 Cedar 堆栈

ruby-on-rails - 如何在 Rails 3.2.1 中使用特定于 Controller 的样式表?

ruby-on-rails - Rails 3.1:ECONNRESET(对等方重置连接

jquery - Ruby on Rails : Where is jquery-rails located?

java - 如何在java中将S3对象列表从一个文件夹移动/复制到另一个文件夹?