我正在使用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)
。
我一直在尝试调试最近两天,但我一直无法找到问题,而且完全陷入困境。任何人都可以帮我吗?