👾
Invalid API Key: *****ined (EOTD No. 20)
シチュエーション
本番環境(EC2)の方でクレジットカードの登録をしようとした時にtokenの受け渡しができず。
statusコードは401。認証エラー(auth_error)
エラー文をみてみる。
"Invalid API Key: *****ined"
APIキーがundefined
になっているらしい。
試行錯誤
以前、環境変数の箱をbash_fileからcredentialsに変えてみたりしたが直らなかった。
APIキーが環境変数で呼び出しているので環境変数を確認。(grep
かrails c
)
ここでは表示されているので、箱には入っている様子。
だとすると環境変数の変更が反映されていない?
本番環境で改めて設定した後、EC2から一度抜けて入り直す。(これで更新されるはず)
動かない。解決法を調べてみよう。
試したこと
APIキーの再発行
APIキーを再発行して環境変数に設定した後、本番環境で確認。だめだ。
ローカルで試してみるとこちらも動かなくなってしまった。古い方のAPIキーが"Invalid"で表示されている。
spring stop
一番簡単にできそうな対処法がこちら。
spring stop
で環境変数のキャッシュをクリアできるらしいという記事を見つけて実行。
bundle exec spring stop
>> Spring is not running.
そもそもSpring
は動いていなかった様子。動作は変わらず。
dotenv-rails
これが大本命。
このgemを使うと環境変数で設定するのではなく、gitignore
に指定した.env
というファイルからAPIキーを読み込んでくれる。
これを実装した後、ローカルの方が動くようになった。
期待を胸に本番環境で試してみるが撃沈。
SOTD(Summary Of The Day)
結果、問題は解決せず。
ローカル環境で商品の購入をすることはできるようになったけど、EC2の方では依然として無理。
そもそもAPI Keyが"Undefined"なのはなんでだろう。
Discussion