sci*_*fic 1 ruby-on-rails amazon-s3 carrierwave
我试图在我的Rails应用程序中将Carrierwave与Amazon S3结合使用,但不断出现错误
"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.
Run Code Online (Sandbox Code Playgroud)
我也收到警告
"[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"
Run Code Online (Sandbox Code Playgroud)
config / initializers / carrierwave.rb:
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: ENV["AWS_ACCESS_KEY_ID"],
aws_secret_access_key: ENV["AWS_ACCESS_KEY"]
}
config.fog_directory = ENV["AWS_BUCKET"]
end
Run Code Online (Sandbox Code Playgroud)
我的存储桶名称是“ buildinprogress”
我仔细检查了我的访问密钥ID和访问密钥是否正确。
如何解决此错误?
这是Fog / Excom的问题,它也一直对我抛出随机错误。
我的解决方法是删除宝石“雾”,而改为宝石“ carrierwave-aws”。
然后,在您的* _uploader.rb中进行更改
storage :fog ---> storage :aws
Run Code Online (Sandbox Code Playgroud)
并更新您的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
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看carrierwave-aws GitHub页面
| 归档时间: |
|
| 查看次数: |
2623 次 |
| 最近记录: |