【问题标题】:Missing required arguments: aws_access_key_id, aws_secret_access_key缺少必需的参数:aws_access_key_id、aws_secret_access_key
【发布时间】:2014-08-31 21:33:47
【问题描述】:

我正在使用带有 S3 存储桶的carriervawe 和雾。我在开发中的标题中出现错误(当我运行 rails srake db:migrate 时),代码如下:

CarrierWave.configure do |config|
  config.fog_credentials = {
    provider: "AWS",
    aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
    aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
  }
  config.asset_host = "http://xxx.cloudfront.net"
  config.fog_directory = 'xxx'
  config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
  config.storage = :fog
end

我也尝试过使用(建议here

<%= ENV['AWS_ACCESS_KEY_ID'] %>

但我收到此错误:

syntax error, unexpected '<' (SyntaxError)

我的变量在 application.yml 文件中

AWS_ACCESS_KEY_ID:  AKIAIxxx...
AWS_SECRET_ACCESS_KEY:  1xxx...

【问题讨论】:

  • “AWS_ACCESS_KEY_ID:”和密钥之间是否有额外的空格?可能是语法错误。
  • 是的,有,我是从实际文件中复制过来的。
  • 确保冒号和键的开头之间只有一个空格。
  • 没有区别。您还有其他解决方案吗?
  • 您是否使用 figaro gem 来创建您的 config/application.yml 文件?

标签: ruby-on-rails


【解决方案1】:

不知道为什么,但由于某种原因,您的环境变量可能被评估为零。我喜欢使用figaro gem 来管理我的环境变量。

简单添加

gem "figaro"

到您的 gemfile。

然后运行

figaro install

这将创建一个 application.yml 文件并将其添加到您的 .gitignore (出于安全原因非常重要)。在此之后,您应该能够将您的 AWS 密钥添加到 application.yml 并像您当前一样在您的 carrierwave 配置中访问它们。

【讨论】:

    【解决方案2】:

    如果这是来自 Michael Hartl 教程,我按照教程中的建议,通过将初始化程序重命名为carrierwave.rb 而不是carrier_wave.rb 来解决我的问题。然后我重新运行了 git 和 Heroku 命令,它在 Heroku 生产服务器上运行了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      相关资源
      最近更新 更多