【问题标题】:Fog authenticated URL with S3/CloudFront使用 S3/CloudFront 对 URL 进行雾验证
【发布时间】:2013-10-28 22:45:28
【问题描述】:

我正在使用Carrierwave 将文件上传到我的应用程序。我还使用Fog gem 将我的文件存储在S3 上,除此之外,我还在CloudFront 中为我的存储桶中的所有内容创建一个分布。

我有几个问题...

  1. 我需要创建“文件下载”,所以我需要编辑response-content-disposition。似乎是(查看示例),这已经可以使用 Fog 或 Carrierwave 完成......但是当我尝试像文档所说的那样传入url(20, :query => { "response-content-disposition" => "xyz" }) 时(20 是过期时间),它声明它只期望一个争论。所以我的问题是,如何设置 URL 的过期时间?

在那里我找不到任何东西后,我尝试了authenticated_url,它也只需要 1 个参数,并将过期时间设置为 10 分钟。我确定我可以在配置中全局设置它,但我不知道为什么我不能在每个链接的基础上设置它?

这是我目前的代码:

def download_link(download)                                                
  file      = download.filename.file                                       
  filename  = file.filename                                                
  extension = file.extension                                               

  options = {                                                              
    :query => {                                                            
      "response-content-type"        => download_content_type(extension),  
      "response-content-disposition" => "attachment; filename=#{filename}" 
    }                                                                      
  }                                                                        

  file.authenticated_url(options)                                          
end  
  1. 据我了解,我不能同时拥有私有和公共的 CF 分发。我可以将我的下载链接全部设为私有,但我网站上的图片也托管在这里......这意味着我网站上的每张图片都需要一个经过身份验证的 URL。我想这不会那么糟糕,除非以后我想缓存,这将是一个问题。所以,我想我最好的选择是为公开的图像制作一个新的存储桶?

【问题讨论】:

  • 是的,一个新的/独立的存储桶和非私有的分发可能是公共图像的最佳选择。
  • 你应该可以通过设置fog_authenticated_url_expiration来修改过期时间。不太清楚为什么它不是每个链接,我猜这种方式更方便?大多数用例似乎都确定了一个有效期(我反正见过的)。

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


【解决方案1】:

我想也许我在上面回答了,但为了答案而不是 cmets:

  1. 我认为您应该能够通过在您的carrierwave 配置中设置fog_authenticated_url_expiration 来修改到期时间。
  2. 是的,如果您想要单独的公共文件,您应该只拥有一个单独的存储桶和可能的分发包。
  3. 您从这个authenticated_url 中得到了什么?听起来这不是您所期望的,但知道它是什么应该会有所帮助。

谢谢。

【讨论】:

    猜你喜欢
    • 2012-04-14
    • 2019-09-08
    • 2011-08-28
    • 2016-09-06
    • 2018-12-25
    • 2021-10-05
    • 1970-01-01
    • 2015-11-16
    • 2017-02-26
    相关资源
    最近更新 更多