一切都在本地按预期工作 . 一旦我推送到heroku,我就无法再上传图片了 .
我从heroku日志获得的错误代码是: Excon::Errors::Forbidden (Expected(200) <=> Actual(403 Forbidden)
XML响应包含: <Code>AccessDenied</Code><Message>Access Denied</Message>
我的 fog.rb
:
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => ENV["ACCESS_KEY_ID"],
:aws_secret_access_key => ENV["SECRET_ACCESS_KEY"]
#:region => 'eu-west-1'
}
#Required for Heroku
config.cache_dir = "#{Rails.root}/tmp/uploads"
config.fog_directory = ENV["BUCKET_NAME"]
end
我的上传者:
class ImageUploader < CarrierWave::Uploader::Base
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
Heroku有正确的环境变量 - 我使用了 figaro
gem . 我在前几次获得403后手动设置它们以确保 figaro
没有错误 .
我认为这可能是该地区的问题,但我的桶是美国和carrierwave文档说默认是 us-east-1
什么导致Heroku上的问题,但不是在本地?
1 回答
Forbidden可能意味着配置目录(而不是其他凭据)存在问题 . 你在本地和Heroku上使用相同的
BUCKET_NAME
值吗?我知道我虽然为你解决了这个问题 .