本番環境でGoogle Mapを表示できない

結論
APIキーを config/credentials.yml.enc
ファイルで管理する
(.env
ファイルでなく)
原因
本番環境にAPIキーを渡せていない
新しく取得したキー設定の誤りだと思ったら、キーの管理方法という
基礎部分
の誤りでした。。
経緯
-
Google Maps API
導入 - ローカル環境でマップ表示できた
-
APIキー
を.env
ファイルで管理していた -
.env
ファイルは外部から見えぬよう、Git
の対象から外していた -
AWSにデプロイ後
、ドメイン取得、HTTPS化してアクセスすると、マップ表示できなくなった - 本番環境にAPIキーを渡せていないのかも?(仮説)
- 本番環境からは
.env
ファイルを参照できない!
本番環境にも、APIキー
を隠して渡す
config.credentials.yml.enc
ファイルにAPIキー
を記述
ローカルのターミナル
EDITOR=vi rails credentials:edit #vimでファイルを開く
config/credentials.yml.enc
google_map_api_key: xxxxxxxxxxxxxxxxxxxxxxxx #APIキーを追記
ビューで、config/credentials.yml.enc
ファイルの記述を読み取る
map.html.erb
<script src="https://maps.googleapis.com/maps/api/js?key=<%= Rails.application.credentials.google_map_api_key %>&callback=initMap" async defer></script>
# <%= Rails.application.credentials.google_map_api_key %>
# これで「config.credentials.yml.enc」ファイルの「google_map_api_key」を取得できる
キーの読み取り方(記述の違い)
<%= Rails.application.credentials.google_map_api_key %> #credentials.yml.encファイルからキー取得
<%= ENV['google_map_api_key'] %> #.envファイルからキー取得
Google Mapが表示されない時の確認事項
- 取得したAPIキーをhtml内に記述しているか
- 支払い情報を登録しているか
- 請求先アカウントを未設定の場合、マップが1日1回しか表示できないらしい
- 表示回数の制限「割り当て」が1回になっていないか
- 回数制限がかかっているとMapが表示エラーになる可能性がある
- 請求アカウントとプロジェクトがひも付いているか
参考
GoogleMapが表示されないエラーが出た時の対処法
Rails5.2から追加された credentials.yml.enc のキホン
さいごに
Google Maps API
導入は比較的スムーズに設定できました。(ローカルで)
マップがうまく読み込まれない主な原因は、Google Cloud Platform
での設定が多いようですが、
APIキー
を本番環境に渡せていないのは盲点でした。
キーやパスワードの管理方法について、セキュリティ面を見直すいい機会とはなりました。
間違っている点がありましたら、ご指摘いただけるとありがたいです。