首页 文章

使用carrierwave错误主机名将文件上传到amazon aws3 rails与服务器证书不匹配

提问于
浏览
1

我遵循了这个教程:http://lifesforlearning.com/uploading-images-with-carrierwave-to-s3-on-rails/我有工作载波上传器将文件存储到磁盘空间我一步一步做了什么:1)添加 fog gem并运行 bundle installbundle update

2)在config / initializers中我创建了r3.rb文件:

CarrierWave.configure do |config|

      config.fog_credentials = {
          :provider               => 'AWS',
          :aws_access_key_id      => 'mykey',
          :aws_secret_access_key  => 'mysecretkey',
          :region                 => 'us-west-2' # Change this for different AWS region. 
      }
      config.fog_directory  = "bucket-main"
    end

我跑了rails并试图保存一些照片 . 但正如你在图片上看到的那样,我的存储桶是空的 . 所以它们必须存储在我的磁盘上 . 现在我该怎么做?

enter image description here

更新我将存储更改为雾 .

这是我的photouploader类代码:

# encoding: utf-8

class PhotoUploader < CarrierWave::Uploader::Base


  storage :fog
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

现在我收到这个错误:

hostname“bucket-main.bucket-main.s3-us-west-1.amazonaws.com”与服务器证书不匹配(OpenSSL :: SSL :: SSLError)

3 回答

  • 0

    我最终通过更新 bundle update fogbundle update carrierwave 解决了我的问题

  • 1

    尝试将 path_style 添加到您的配置和 fog_directory

    config.fog_credentials = {
        ...
       :path_style => true
    }
    config.fog_directory = 'bucket-main'
    
  • 0

    我只花了几个小时来追踪这个错误的原因,我也得到了:

    hostname“bucket-main.bucket-main.s3-us-west-1.amazonaws.com”与服务器证书不匹配(OpenSSL :: SSL :: SSLError)

    奇怪的是如何在主机名中重复两次桶名称 . 事实证明我配置了错误的区域名称 . 请注意你的 config.fog_credentials

    :region =>'us-west-2'

    ...但异常中的主机名有 s3-us-west-1 ?如果您的存储桶位于一个AWS区域中,但您在Fog凭据中配置了不同的区域,则Fog将尝试遵循AWS的重定向,并且在这种情况下,存储桶名称会以某种方式加倍 . Fog会发出关于重定向的警告,但Carrierwave最终会将此隐藏起来 .

    将您的Fog凭据中的 :region 设置为存储桶实际位于AWS中的位置, does not match the server certificate 异常将停止发生 .

相关问题