Paperclip配置与AWS Elastic Beanstalk

时间:2018-01-29 23:43:55

标签: ruby-on-rails amazon-web-services paperclip elastic-beanstalk

我在我的Rails 5.1应用程序中使用Paperclip,并在我的development.rb和production.rb中使用标准配置:

  config.paperclip_defaults = {
    storage: :s3,
    s3_credentials: {
      bucket: ENV.fetch('S3_BUCKET'),
      access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
      secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
      s3_region: ENV.fetch('AWS_REGION'),
    }
  }

我通过Figaro gem将ENV变量存储在application.yml中。

这很好,但我现在正在尝试将我的应用程序上传到新的AWS Elastic Beanstalk应用程序,并且我的构建失败了。花了大约3个小时来查看所有日志并尝试各种更改,我将故障范围缩小到我认为Beanstalk正在阅读Paperclip ENV并且变得混乱的事实。

来自日志:

  rake aborted!
<<<
  /var/app/ondeck/config/environments/production.rb:97:in `fetch'
  /var/app/ondeck/config/environments/production.rb:97:in `block in <top (required)>'
  /var/app/ondeck/config/environments/production.rb:1:in `<top (required)>'
  /var/app/ondeck/config/environment.rb:5:in `<top (required)>'
  /opt/rubies/ruby-2.4.3/bin/bundle:23:in `load'
  /opt/rubies/ruby-2.4.3/bin/bundle:23:in `<main>'
  Tasks: TOP => environment

config/environments/production.rb:97等同于我的Paperclip配置中的以下值:

access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID')

我似乎无法在网上找到任何有助于解决此问题的内容。

有什么想法吗?

我可以同时使用相同的IAM用户,以便ENV值匹配吗?

1 个答案:

答案 0 :(得分:1)

将回形针S3 environment变量添加到Elastic Beanstalk Environment

  

如何吗

转到您的具体Environment

选择Configuration

Configuration overview选择Software磁贴

在最底部,您会看到表单部分Environment properties

为您的变量添加keyvalue数据

保存并等待您的环境update

了解详情: Elastic Beanstalk Docs