【问题标题】:MissingRegionError when trying to upload avatar to S3 using Rails, Paperclip, deployed on Heroku尝试使用部署在 Heroku 上的 Rails、Paperclip 将头像上传到 S3 时出现 MissingRegionError
【发布时间】:2015-12-30 22:41:01
【问题描述】:

我已经为这个问题苦苦挣扎了一天,在网上找不到任何其他帮助。我有一个 Rails 4 应用程序,我在其中使用 AWS S3 和回形针 gem 来托管用户头像。我已经为存储桶、访问密钥 ID、密钥以及区域设置了我的 Heroku 配置变量。但是,每当我尝试在 heroku 应用上上传图片时,我的 Heroku 日志中都会出现此错误:

Aws::Errors::MissingRegionError (missing region; use :region option or export region name to ENV['AWS_REGION']):

在我的 production.rb 文件中,我有以下代码:

app/config/environments/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"

任何帮助将不胜感激。

【问题讨论】:

    标签: ruby-on-rails-4 heroku amazon-s3 paperclip aws-sdk


    【解决方案1】:

    经过多次尝试,我想我解决了这个问题。我所做的主要更改是 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 会查找该文件:

    app/config/aws.yml

    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/

    【讨论】:

      猜你喜欢
      • 2015-10-29
      • 2013-02-02
      • 2012-02-22
      • 2012-09-23
      • 2015-12-15
      • 2015-04-26
      • 1970-01-01
      • 2011-05-02
      • 2019-07-14
      相关资源
      最近更新 更多