从Amazon通过CloudFront下载文件时出错?

时间:2014-01-17 11:10:24

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

我正在使用Amazon CloudFront在我的Rails应用程序中存储和检索某些文件。

CloudFront启用了使用CloudFront密钥对提供私有内容。 这个功能在过去的八个月里运行得非常好,但突然间它停止了工作并且发生了一些错误。

为了对网址进行签名,我使用的是 CloudFront signer gem

应用程序/配置/初始化/ CloudFront的-signer.rb:

AWS::CF::Signer.configure do |config|
  config.key_path = "#{Rails.root}/pk-filname.pem"
  config.key_pair_id  = "key_pair_id"
  config.default_expires = 300
end

下载部分:

def download
  @file = obj.file

  file_path = @file.document.to_s
  extname = File.extname(file_path)[1..-1]
  if Rails.env.staging? || Rails.env.production?
    content_type = @file.document_content_type
    url = AWS::CF::Signer.sign_url "#{file_path}"
    data = open(url)
    send_data data.read, :filename => "#{user.name}.#{extname}", :type => content_type , :dispostion=>'inline', :status=>'200 OK', :stream=>'true'
  else
    head(:not_found) and return if (file).nil?
    send_file file.document.path, :filename=>"#{user.name}.#{extname}", :dispostion=>'inline'
  end
end

我收到错误:

OpenURI::HTTPError (403 Forbidden):

这个特殊错误发生在data = open(url)

我一直在尝试调试最近两天,但我一直无法找到问题,而且完全陷入困境。任何人都可以帮我吗?

0 个答案:

没有答案