LoginSignup
13
10

More than 3 years have passed since last update.

ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key発生時の対応

Last updated at Posted at 2019-04-15

何度もやり方を忘れてやってしまうので、こちら記事にしました。

GitHubからフォークしてきたプロジェクトをダウンロードした時に発生。
carrierwaveのgemが入っていると起こりやすいエラーかもしれません。

以下エラー文

$ rails db:migrate
rails aborted!
ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key
LoadError: cannot load such file -- carrierwave/storage/abstract
/Users/name/appname/config/initializers/carrierwave.rb:1:in `<top (required)>'
/Users/name/appname/config/environment.rb:5:in `<top (required)>'
/Users/name/appname/bin/rails:9:in `require'
/Users/name/appname/bin/rails:9:in `<top (required)>'
/Users/name/appname/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)

dotenv-railsのgemを入れていたので、
.envファイルにaws_access_key_idとaws_secret_access_keyを暫定的に設置しました。

しかしながら解決しない…

エラー元となったcarrierwave.rbを確認すると以下のような記述が。

config/initializers/carrierwave.rb
aws_access_key_id: ENV["AWS_ACCESS_KEY_ID_MER60"],
aws_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY_MER60"],

ここで気づきましたが、今回のケースだと設定すべきなのは、

  • aws_access_key_idではなくてAWS_ACCESS_KEY_ID_MER60(ENVの中の文字列)
  • aws_secret_access_keyではなくてAWS_SECRET_ACCESS_KEY_MER60(ENVの中の文字列)

(エラー文をパッと見で判断してしまったので惑わされました…)

つまり今回のケースであれば下記の通りに記述します。

.env
AWS_ACCESS_KEY_ID_MER60 = 'aaaaaaaaaaaaaaaaaaa'
AWS_SECRET_ACCESS_KEY_MER60 = 'aaaaaaaaaaaaaaaaaaaaaaa'

もう一度rails db:migrateをリトライ!

$ rails db:migrate
rails aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:

  config.secret_key = '37ed159461157b57cf3f27380d7ad6172084c3b34639cd9af7cf68d537a2c0f101be45222bc4a607452caa1b5883f63c6492d3c5b98d4eb90692350000000000'

Please ensure you restarted your application after installing Devise or setting the key.

最初のエラーは消えたけれども、今度はdeviseのシークレットキーを設定せよとのコメントが。
一応devise.rbを確認します。

config/initializers/devise.rb
  config.secret_key = ENV['DEVISE_SECRET_KEY']

同じような形なので、同様にDEVISE_SECRET_KEYも.envに記載。

.env
AWS_ACCESS_KEY_ID_MER60 = 'aaaaaaaaaaaaaaaaaaa'
AWS_SECRET_ACCESS_KEY_MER60 = 'aaaaaaaaaaaaaaaaaaaaaaa'
DEVISE_SECRET_KEY = '37ed159461157b57cf3f27380d7ad6172084c3b34639cd9af7cf68d537a2c0f101be45222bc4a607452caa1b5883f63c6492d3c5b98d4eb90692350000000000'

以上のフローで取り敢えずdb:migrateまではうまくいきました。

13
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
10