大田区から発信するゆるゆる日記

主にITエンジニアに関する備忘録日記。たまに趣味も。何か不備があればコメント頂けると幸いです。Twitterアカウント https://twitter.com/ryuzan03

【エラー解決】ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key

※下記の内容に不備がありましたら、コメント頂けると幸いです。また、下記の内容をご使用頂ける場合は自己責任でお願いします。

【結論】

・.gitignoreファイルからsecrets.ymlの記述を消すと、エラーが解決した

 

目次

 

【背景】

アプリを別の環境にデプロイしなおそうとしたが・・・

私が通っていたプログラミングスクールでは、クローンサイトの作成をチーム開発で行うカリキュラムがあり、カリキュラム終了後にはクローンサイトを個人でブラッシュアップすることもできます。

 

私はこのクローンサイトを転職に際にポートフォリオとして使おうと思ったので、既に本番環境にデプロイしていたこのクローンサイトを、自分が管理できるようにクローンして別の本番環境にデプロイしようとしたところ、タイトルのエラーが発生しました。

 

よく見るエラーですが、備忘録として日記に書こうと思います。

 

【内容】

環境

Ruby on rails 5.0.1

Ruby 2.3.1

AWS EC2インスタンス

AWS S3

・Nginx

Unicorn 5.4.1

MySQL

Capistrano

 

エラー内容

エラーが発生したタイミング

Unicorn内のRailsアプリを起動しようとした時

 

実行したコマンド
$ unicorn_rails -c config/unicorn.rb -E production

 

発生したエラー
ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key

 

解決方法

①logの確認

Railsアプリ起動時にはエラー内容が分かりませんので、まず最初にlogを確認しました。logを確認することで、初めて今回のエラー内容が判明します。

実行コマンド

less log/unicorn.stderr.log

 

 結果

ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key

 

②エラー内容を解読する

引数の「aws_access_key_id」と「aws_secret_access_key」が見つからないよという意味みたいです。

 

③エラーの予想を立てる

私が真っ先に考えた予想は、環境変数に記述したコードが間違っているのでは?ということです。

次に考えたのは、secrets.ymlやunicon.rbのコードが間違っているのでは?ということでした。

 

④予想に基づき確認

③の予想を全て確認しましたが、問題はありませんでした。

 

⑤解決

エラー解決方法が分からず、数時間が経ちましたが、そこでようやくあることに気付きました。

 

.gitignoreにsecrets.ymlを記述したまんまじゃん!

 

secrets.ymlの記述を消したら、無事に起動することができました。

もちろん、デプロイが完了したら、.gitignoreにsecres.ymlを追加しました。

 

【今後に向けて】

こんな初歩的なところで、あんなに時間を無駄にしていたとは・・・

 

エラー解決をするにあたり、エラーに関する知識やデバッグツールの使い方を熟知する必要があるなと痛感しました。あと回数。慣れが大切。

 

また、どこかのタイミングでキッパリと諦めて、誰かに頼るのも一つの手ですね。

その際には、できるだけエラー内容が分かりやすいように、エラー内容をまとめておくのは必須ですね。分かりにくいと迷惑がかかってしまうので。

 

で、今後に向けてですが、そもそもでRailsの最新バージョンでは、secrets.yml自体がなくなってるのかな?

今後は、この辺りの学習をしていきたいと思っています。