Rails缺少必需的参数:aws_access_key_id,aws_secret_access_key

时间:2015-10-09 13:34:43

标签: ruby-on-rails heroku amazon-s3

我的heroku设置有问题,我正在尝试用

修复它
RAILS_ENV=production bundle exec rake assets:precompile

我收到错误消息

ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key

我该如何解决这个问题?

我已经设置了我的heroku环境变量。 heroku config给出了

AWS_ACCESS_KEY_ID:           XXXXX
AWS_SECRET_ACCESS_KEY:       XXXXX
DATABASE_URL:                postgres://XXXXX.compute-1.amazonaws.com:XXXXX
RESQL_BLACK_URL:             postgres://XXXXX.compute-1.amazonaws.com:XXXXX                    
LANG:                        en_US.UTF-8
RACK_ENV:                    production
RAILS_ENV:                   production
S3_ACCESS_KEY:               XXXXX
S3_BUCKET:                   XXXXX
S3_SECRET_KEY:               XXXXX
SENDGRID_PASSWORD:           XXXXX
SENDGRID_USERNAME:           XXXXX

我是否需要在config / production.rb中添加一些内容?我试过这个:

config.aws_access_key_id = ENV['AWS_ACCESS_KEY_ID']
config.aws_secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']

在config / initializers / carrier_wave.rb中,我添加了:

S3Client = Aws::S3::Client.new(
  aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
  aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
  aws_region: 'us-east-1'
)

但它仍然会出现同样的错误。

2 个答案:

答案 0 :(得分:0)

使用aws.rb创建一个初始值设定项:(如果已经有,则添加)

S3Client = Aws::S3::Client.new(
  access_key_id: 'ACCESS_KEY_ID',
  secret_access_key: 'SECRET_ACCESS_KEY',
  region: 'REGION'
) 

答案 1 :(得分:0)

如果您在本地运行此命令,则问题是本地计算机上未设置ENV。

Heroku应该在部署时自动预编译您的资产。如果必须在本地机器上进行,只需设置ENV变量。