Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 带Amazon S3的Carrierwave上载-403禁止错误_Ruby On Rails_Amazon S3_Carrierwave - Fatal编程技术网

Ruby on rails 带Amazon S3的Carrierwave上载-403禁止错误

Ruby on rails 带Amazon S3的Carrierwave上载-403禁止错误,ruby-on-rails,amazon-s3,carrierwave,Ruby On Rails,Amazon S3,Carrierwave,我试图在我的Rails应用程序中使用Carrierwave和AmazonS3,但我一直收到错误消息 "Excon::Errors::Forbidden (Expected(200) <=> Actual(403 Forbidden)." <Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not matc

我试图在我的Rails应用程序中使用Carrierwave和AmazonS3,但我一直收到错误消息

"Excon::Errors::Forbidden (Expected(200) <=> Actual(403 Forbidden)."  
<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.
我也收到了警告

"[WARNING] fog: the specified s3 bucket name() is not a valid dns name, which will negatively impact performance.  For details see: http://docs.amazonwebservices.com/AmazonS3/latest/dev/BucketRestrictions.html"  
config/initializers/carrierwave.rb:

我的名字是buildinprogress

我已经仔细检查了我的访问密钥ID和访问密钥是否正确


如何修复此错误

Fog/Excom也有问题,它不断地为我抛出随机错误

我的修复方法是删除gem'fog'并用gem'carrierwave aws'替换它

然后,在*\u uploader.rb中更改

并更新您的carrierwave.rb文件,例如:

  CarrierWave.configure do |config|
    config.storage    =  :aws                  # required
    config.aws_bucket =  ENV['S3_BUCKET']      # required
    config.aws_acl    =  :public_read

    config.aws_credentials = {
      access_key_id:      ENV['S3_KEY'],       # required
      secret_access_key:  ENV['S3_SECRET']     # required
    }

    config.aws_attributes = {
                              'Cache-Control'=>"max-age=#{365.day.to_i}",
                              'Expires'=>'Tue, 29 Dec 2015 23:23:23 GMT'
                            }
  end

要了解更多信息,请查看GitHub页面

,Fog/Excom也有问题,它不断为我抛出随机错误

我的修复方法是删除gem'fog'并用gem'carrierwave aws'替换它

然后,在*\u uploader.rb中更改

并更新您的carrierwave.rb文件,例如:

  CarrierWave.configure do |config|
    config.storage    =  :aws                  # required
    config.aws_bucket =  ENV['S3_BUCKET']      # required
    config.aws_acl    =  :public_read

    config.aws_credentials = {
      access_key_id:      ENV['S3_KEY'],       # required
      secret_access_key:  ENV['S3_SECRET']     # required
    }

    config.aws_attributes = {
                              'Cache-Control'=>"max-age=#{365.day.to_i}",
                              'Expires'=>'Tue, 29 Dec 2015 23:23:23 GMT'
                            }
  end

有关更多信息,请查看GitHub页面

我发现,如果我在carrierewave.rb文件中硬编码bucket名称,它会工作,但是当我将bucket名称定义为环境变量时,它就不工作了;你可能把环境变量搞砸了。执行puts ENV[AWS_BUCKET]。检查初始值设定项文件,并检查是否打印了正确的BUCKET名称……我发现,如果我在carrierWave.rb文件中硬编码BUCKET名称,它可以工作,但当我将BUCKET名称定义为环境变量时,它就不工作了;你可能把环境变量搞砸了。执行puts ENV[AWS_BUCKET]。在初始值设定项文件中进行检查,并检查是否打印了正确的BUCKET名称……fog gem已经出现问题好几天了!非常感谢你,这起作用了!在我的例子中,不得不将config.aws_acl改为“private”,虽然是从GitHub文档中复制的,但是在fog gem上已经有好几天的问题了!非常感谢你,这起作用了!在我的例子中,不得不将config.aws_acl更改为“private”,不过,这是从GitHub文档复制的
  CarrierWave.configure do |config|
    config.storage    =  :aws                  # required
    config.aws_bucket =  ENV['S3_BUCKET']      # required
    config.aws_acl    =  :public_read

    config.aws_credentials = {
      access_key_id:      ENV['S3_KEY'],       # required
      secret_access_key:  ENV['S3_SECRET']     # required
    }

    config.aws_attributes = {
                              'Cache-Control'=>"max-age=#{365.day.to_i}",
                              'Expires'=>'Tue, 29 Dec 2015 23:23:23 GMT'
                            }
  end