我一直在努力解决这个问题一天,并且无法在网上找到其他任何帮助。我有一个Rails 4应用程序,我使用AWS S3和paperclip gem来托管用户头像。我为存储桶,访问密钥ID和密钥以及区域设置了我的Heroku配置变量。但是,每当我尝试在heroku应用程序上传图片时,我的Heroku日志中都会出现此错误:
Aws::Errors::MissingRegionError (missing region; use :region option or export region name to ENV['AWS_REGION']):
在我的production.rb文件中,我有这段代码:
config.paperclip_defaults = {
storage: :s3,
region: ENV['AWS_REGION'],
s3_credentials: {
bucket: ENV['AWS_BUCKET'],
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
}
}
我已经密切关注此链接(https://devcenter.heroku.com/articles/paperclip-s3),但仍不确定为什么我一直收到错误。我也尝试过硬编码'us-west-1'
,但这并不起作用。
在heroku控制台中:
irb(main):001:0> ENV['AWS_REGION']
=> "us-west-1"
任何帮助都将不胜感激。
答案 0 :(得分:0)
经过大量试验,我认为我解决了这个问题。我做的主要更改是1)在gemfile中使用gem 'aws-sdk', '< 2.0'
而不是v2.0。其次,product.rb中的这种变化:
config.paperclip_defaults = {
storage: :s3,
:s3_credentials => {
bucket: ENV['AWS_BUCKET'],
:s3_credentials => "#{Rails.root}/config/aws.yml",
}
}
和aws.yml的创建,aws-sdk寻找:
development:
access_key_id: AWS_ACCESS_KEY_ID
secret_access_key: AWS_SECRET_ACCESS_KEY
production:
access_key_id: AWS_ACCESS_KEY_ID
secret_access_key: AWS_SECRET_ACCESS_KEY
如果有人仍有问题,请点击此链接可能会对您有所帮助: http://www.korenlc.com/rails-uploading-photos-via-amazon-s3-and-paperclip/