【发布时间】:2018-07-08 18:31:25
【问题描述】:
我在我的 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 等同于我的回形针配置中的以下值:
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID')
我似乎无法在网上找到任何有助于解决此问题的项目。
有什么想法吗?
我可以为两者使用相同的 IAM 用户,以便 ENV 值匹配吗?
【问题讨论】:
-
请确认您的
AWS_ACCESS_KEY_ID存在于您的配置中...... -
对于 elastic-beanstalk,您还可以在 AWS 仪表板上的 env 软件配置中设置 env 变量
-
AWS_ACCESS_KEY_ID在我的 beanstalk 配置中不存在,因为它不是必需的。它在我的本地应用程序中,用于 Paperclip 的 S3 配置。如果我确实将它添加到 Beanstalk,毫无疑问我需要创建一个新的 IAM 用户来访问回形针存储桶和我的应用存储桶? -
它是否存在于您的 figaro 环境变量中...?
-
是的......
标签: ruby-on-rails amazon-web-services paperclip amazon-elastic-beanstalk