ruby-on-rails - 雾、Amazon S3 和 Carrierwave Rails 问题

标签 ruby-on-rails ruby-on-rails-3 amazon-s3 carrierwave fog

更新内容

我的设置现在如下:

#Carrierwave Initializer

CarrierWave.configure do |config|
    config.fog_credentials = {
        :provider => 'AWS',
        :aws_access_key_id => ENV['S3_KEY'],
        :aws_secret_access_key => ENV['S3_SECRET'], 
    }
    config.fog_directory = ENV['S3_BUCKET_NAME']
    config.fog_public     = false  # optional, defaults to true
    config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}

end


#Uploader

class ProteinUploader < CarrierWave::Uploader::Base
   include CarrierWave::MiniMagick
   storage :fog

   def store_dir
      "images/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
   end

end


#Heroku Config Variables

S3_BUCKET_NAME = top5protein
S3_KEY = 'xxx'
S3_SECRET = 'xxx'


#Gemfile
...
gem "fog", "~> 1.14.0"
gem "excon", "~> 0.25.3"
gem 'carrierwave'
gem 'activeadmin'
...

我仍然遇到的错误是:

Excon::Errors::Forbidden (Expected(200) <=> Actual(403 Forbidden)
2013-07-28T11:51:13.251291+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/excon-0.25.3/lib/excon/connection.rb:260:in `rescue in request'
2013-07-28T11:51:13.251455+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/excon-0.25.3/lib/excon/connection.rb:220:in `request'
2013-07-28T11:51:13.251056+00:00 app[web.1]: FYyKoH99bOV97aK1TQI9dEhIBycFUg2TyP2fYuzY1/Ke+TXevyjKlUA</HostId><SignatureProvided>ZuHHwrD3Qdo9IHNhE14eKiB0OgY=</SignatureProvided><StringToSign>PUT\n\nimage/png\nSun, 28 Jul 2013 11:51:12 +0000\nx-amz-acl:private\n/top5protein/images/general/image/2/Protein1.png</StringToSign><AWSAccessKeyId>AKIAJ5GKDLKK3CPHNTGA</AWSAccessKeyId></Error>", @headers={"x-amz-request-id"=>"04AD4FA1DDE488CE", "x-amz-id-2"=>"SkpxPPpk0FYyKoH99bOV97aK1TQI9dEhIBycFUg2TyP2fYuzY1/Ke+TXevyjKlUA", "Content-Type"=>"application/xml", "Transfer-Encoding"=>"chunked", "Date"=>"Sun, 28 Jul 2013 11:51:12 GMT", "Connection"=>"close", "Server"=>"AmazonS3"}, @status=403, @remote_ip="207.171.163.195">):

HNTGA</AWSAccessKeyId></Error>", :headers=>{"x-amz-request-id"=>"04AD4FA1DDE488CE", "x-amz-id-2"=>"SkpxPPpk0FYyKoH99bOV97aK1TQI9dEhIBycFUg2TyP2fYuzY1/Ke+TXevyjKlUA", "Content-Type"=>"application/xml", "Transfer-Encoding"=>"chunked", "Date"=>"Sun, 28 Jul 2013 11:51:12 GMT", "Connection"=>"close", "Server"=>"AmazonS3"}, :status=>403, :remote_ip=>"207.171.163.195"}, @body="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><StringToSignBytes>50 55 54 0a 0a 69 6d 61 67 65 2f 70 6e 67 0a 53 75 6e 2c 20 32 38 20 4a 75 6c 20 32 30 31 33 20 31 31 3a 35 31 3a 31 32 20 2b 30 30 30 30 0a 78 2d 61 6d 7a 2d 61 63 6c 3a 70 72 69 76 61 74 65 0a 2f 74 6f 70 35 70 72 6f 74 65 69 6e 2f 69 6d 61 67 65 73 2f 67 65 6e 65 72 61 6c 2f 69 6d 61 67 65 2f 32 2f 50 72 6f 74 65 69 6e 31 2e 70 6e 67</StringToSignBytes><RequestId>04AD4FA1DDE488CE</RequestId><HostId>SkpxPPpk0

如果有人有任何可能有帮助的进一步建议,那就太好了!

最佳答案

在您的情况(如上一条评论中所述)和我的情况下,此错误的原因是 key 不正确。

我想我应该把这个留在这里,以便将来遇到此错误的人可以先检查问题最可能的根源。

关于ruby-on-rails - 雾、Amazon S3 和 Carrierwave Rails 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17899249/

相关文章:

ruby-on-rails - 如何在索引之前调用方法并从模型中调用新方法

python - 如何删除开头为的 S3 文件

file-upload - Amazon S3 上传 Key 有什么作用

amazon-s3 - 使用 s3 中的数据初始化 ec2 实例

ruby-on-rails - 创建时的 before_validation 不起作用

ruby-on-rails - 用于 AngularJS HTML 模板的 Rails + AWS CloudFront + CORS

ruby-on-rails - 嵌套注册表单不显示嵌套对象的错误消息

jquery - XHR 不起作用,因为 "Origin is not allowed by Access-Control-Allow-Origin"

ruby-on-rails - 使用 Bootstrap 使按钮成为 PDF 文件的链接

ruby-on-rails - 如何向 Rails 中的 number_field 添加默认值?