【エラー解決】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 S3
・Nginx
・Unicorn 5.4.1
エラー内容
エラーが発生したタイミング
実行したコマンド
$ 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自体がなくなってるのかな?
今後は、この辺りの学習をしていきたいと思っています。