我在Heroku日志中遇到以下错误: -
Excon :: Errors :: Forbidden(Expected(200)< => Actual(403 Forbidden)
2013-10-02T16:25:51.131316 + 00:00 app [web.1]:response => #“\ n InvalidAccessKeyId
您提供的AWS访问密钥ID不存在于我们的记录中.5CA6A058BCE5D28AQ6grl4LPNO + F9YVtJZA7YIASYUFw4IpggAVlMJEzsdAhdwSWOTIB8K + VolEwyGYLS3_KEY”,: headers => {“x-amz-request-id”=>“5CA6A058BCE5D28A “,”x-amz-id-2“=>”Q6grl4LPNO + F9YVtJZA7YIASYUFw4IpggAVlMJEzsdAhdwSWOTIB8K + VolEwyGYL“,”Content-Type“=>”application / xml“,”Transfer-Encoding“=>”chunked“,”Date“ “=>”星期三,2013年10月2日16:25:50 GMT“,”连接“=>”关闭“,”服务器“=>”AmazonS3“},:status => 403,:remote_ip =&gt ;“176.32.100.200”},@ body =“\ n InvalidAccessKeyId
您提供的AWS访问密钥ID不在我们的记录中.5CA6A058BCE5D28AQ6grl4LPNO + F9YVtJZA7YIASYUFw4IpggAVlMJEzsdAhdwSWOTIB8K + VolEwyGYL
我已经检查了AWS密钥至少十几次。 我使用以下命令设置了Heroku变量:
heroku config:add S3_KEY=XXXXXXXXXXXXXXX S3_SECRET=XXXXXXXXXXXXXXXXXXXXXX
但是我得到了上面的错误。
答案 0 :(得分:1)
您的AWS访问密钥似乎无效。要仔细检查几件事:
您的访问密钥,密钥和存储桶是否都与AWS信息中心中的内容相匹配?
您是否在carrierwave初始化程序中正确设置了这些变量?您应该可以通过从heroku run rails console
CarrierWave.configure { |config| puts config.fog_credentials; puts config.fog_directory }
运行以下内容来进行检查。
如果你加倍检查那些并且确实没有任何问题,那么你的S3帐户可能会遇到一个奇怪的问题(你可以使用相同的凭证访问另一个S3实用程序的S3帐户吗?),或者有你的代码中发生了一些疯狂的事情。
祝你好运!答案 1 :(得分:0)
我能够弄清楚使用Taavo的建议。我使用figaro gem将AWS凭据放入config / application.yml。
此外,我还更改了我的carrierwave.rb文件:
CarrierWave.configure do |config|
config.fog_credentials = {
provider: "AWS",
aws_access_key_id: "S3_KEY",
aws_secret_access_key: "S3_SECRET",
}
config.cache_dir = "#{Rails.root}/tmp/uploads"
config.fog_directory = "S3_BUCKET_NAME"
config.fog_public = false
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
end
到
CarrierWave.configure do |config|
config.fog_credentials = {
provider: "AWS",
aws_access_key_id: ENV["S3_KEY"],
aws_secret_access_key: ENV["S3_SECRET"],
#region: 'Northern California'
}
config.cache_dir = "#{Rails.root}/tmp/uploads"
config.fog_directory = ENV["S3_BUCKET_NAME"]
config.fog_public = false
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
end
然后在Heroku中添加了以下内容:
$ heroku config:set S3_BUCKET_NAME=your_bucket_name
$ heroku config:set S3_KEY=your_access_key_id
$ heroku config:set S3_SECRET=your_secret_access_key
这就完成了工作。感谢Taavo的建议。