db:migrate给出了ArgumentError:缺少必需的参数:aws_secret_access_key

时间:2015-03-31 09:01:47

标签: ruby-on-rails ruby-on-rails-4 amazon-web-services amazon-s3 carrierwave

每当我尝试运行db:migrateheroku run console时,我都会ArgumentError: Missing required arguments: aws_secret_access_key

我为heroku config:setAWS_ACCESS_KEY_ID S3_BUCKET AWS_SECRET_ACCESS_KEY. Afterwards I run heroku config and see those two and the heroku运行控制台已完成correct. Then I run,我收到错误。

我也加入了我的IAM管理控制台,并为我的用户提供了AmazonS3FullAccess政策。虽然这没有任何作用。

我也使用config/application.yml gem中的figaro来存储我的密钥,但这也没有什么不同。

我想知道如何解决这个问题,有谁知道要知道什么?

carrierwave.rb:

if Rails.env.production?
    CarrierWave.configure do |config|
        config.root = Rails.root.join('tmp') # adding these...
        config.cache_dir = 'carrierwave' # ...two lines
        config.fog_credentials = {
            # Configuration for Amazon S3
            :provider => 'AWS',
            :aws_access_key_id => ENV['S3_ACCESS_KEY'],
            :aws_secret_access_key => ENV['S3_SECRET_KEY'],
            :region => 'us-west-2',
            :host => 's3.example.com',
            :endpoint => 'https://s3.example.com:8080'
        }
        config.fog_directory = ENV['S3_BUCKET']
        config.fog_public = false # optional, defaults to true
        config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}  #   optional, defaults to {}
    end
end 

1 个答案:

答案 0 :(得分:1)

您已设置环境变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY,但您的应用程序会读取S3_ACCESS_KEYS3_SECRET_KEY个环境变量。