【问题标题】:Rails 4 SSL error stops direct s3 upload with paperclipRails 4 SSL 错误停止使用回形针直接上传 s3
【发布时间】:2014-01-13 12:28:32
【问题描述】:

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

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

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:in `set_upload_attributes'

由于格式不正确,我之前收到与 DIRECT_UPLOAD_URL_FORMAT 验证失败有关的错误,所以我稍微修改了一下,以匹配回形针生成的 direct_upload_url。我的修改版本是:

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

这与控制台中显示的 url 的格式相匹配:

"照片"=>{"direct_upload_url"=>"https://s3-eu-west-1.amazonaws.com/mybucketname/uploads%2F1389613985667-mo4ncxxus0q0vn29-d78ac9dc4f18fa612e33c87ec9ad0f4e%2Fmiddy.jpg"}

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

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

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

我可以做些什么来满足 SSL 要求?

编辑: 我还应该提到,我在引用的网址中放置了“mybucketname”,我的实际存储桶名称与该格式匹配,没有点或破折号等,只有小写字母。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    我在亚马逊文档中的“存储桶访问”标题下找到了相关信息: http://docs.aws.amazon.com/AmazonS3/latest/dev/LocationSelection.html

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-23
      • 2012-04-26
      • 2014-01-31
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2021-04-21
      • 2014-10-17
      相关资源
      最近更新 更多