Rails 4 SSL错误停止使用回形针直接上传s3

时间:2014-01-13 12:28:32

标签: ruby-on-rails ssl amazon-s3 ruby-on-rails-4 paperclip

我一直关注this guide直接使用回形针以及this blog post进行S3上传,建议对之前链接的指南进行一些有用的调整。我唯一的区别是我的模型名称是照片而不是文档。

我正在将原始文件成功上传到我的存储桶,但是photo.rb中的before_create操作(指南中的document.rb)在此行失败:

direct_upload_head = s3.buckets[Rails.configuration.aws[:bucket]].objects[direct_upload_url_data[:path]].head

rails服务器控制台显示以下错误:

  

OpenSSL :: SSL :: SSLError(主机名与服务器证书不匹配):     app / models / photo.rb:56:在`set_upload_attributes'

我之前因为格式错误而导致DIRECT_UPLOAD_URL_FORMAT验证失败,因此我稍微修改了一下,以便与paperclip生成的direct_upload_url相匹配。我的修改版本是:

DIRECT_UPLOAD_URL_FORMAT = %r{\Ahttps:\/\/#{Rails.configuration.aws[:region]}\.amazonaws\.com\/#{Rails.configuration.aws[:bucket]}\/(?<path>uploads\/.+\/(?<filename>.+))\z}.freeze

这匹配控制台中显示的网址格式:

  

“照片”=&GT; { “direct_upload_url”=&gt; “中https://s3-eu-west-1.amazonaws.com/mybucketname/uploads%2F1389613985667-mo4ncxxus0q0vn29-d78ac9dc4f18fa612e33c87ec9ad0f4e%2Fmiddy.jpg”}

在修改DIRECT_UPLOAD_URL_FORMAT之后,我让它通过了验证并且出现了SSL错误。

我注意到在控制台中显示的网址中,正在发布的网址中,“上传”和文件夹名称之后没有显示正斜杠,但它们会在此之前显示。这可能与它不符合SSL要求有关吗?

除了在必要时切换为“照片”的“文档”之外,所有其他代码都与指南中的内容相匹配。

我能做些什么来满足SSL要求吗?

编辑: 我还要提一下,我把'mybucketname'放在引用的url中我的实际存储桶名称与没有点或短划线等的格式匹配,只是小写字母。

1 个答案:

答案 0 :(得分:0)

事实证明,我的问题是由我为我的桶选择的区域引起的。

本教程设置为使用仅适用于美国标准区域的路径样式URL。

我为我的开发桶选择了一个欧盟地区(爱尔兰),并且未能成功修改代码以使用非美国标准存储桶所需的域样式URL。

我在亚马逊的文档中找到了“Bucket Access”标题下的信息: http://docs.aws.amazon.com/AmazonS3/latest/dev/LocationSelection.html

我对我的代码现在如何工作感到满意,但我将继续研究如何修改代码以使用Ireland存储区域来减少开发过程中的延迟。