所以我一直在阅读签名网址及其一些好处。特别是关于热连接的部分。我们的应用不允许用户从我们的网站嵌入媒体(照片,视频,音频)。所以签名的URL看起来是正确的方向。主要是为了防止热链接。
所以现在我知道我的要求了。我有几个问题。
触及第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)
答案 0 :(得分:3)
默认情况下,您的存储分区将设置为私有。当您将文件上传到S3时,您可以设置ACL(权限) - 在您的情况下,您需要确保文件是私有的。
最简单的解决方案是为每个访问者创建新的签名网址。你可以做一些事情,比如每天生成新的url,将它们存储在某个地方,然后使用它们,但这会增加复杂性,但收效甚微。您可能需要这个的地方也是启用客户端缓存。每次创建新网址时,浏览器都会将其视为不同的文件并下载新的副本。如果这不是您想要的行为,则需要生成将来会过期的URL并重用这些URL - 但这会降低阻止热链接的效果。
是的,生成网址是免费的。它们是在客户端生成的,不要触摸S3。我想有时间/处理成本,但我创建的网页包含每次访问时生成的数百个网址,并且没有发现任何性能问题。