#本番環境でGoogle Mapを表示できない
このページではGoogleマップが正しく読み込まれませんでした。
#結論
####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でファイルを開く
google_map_api_key: xxxxxxxxxxxxxxxxxxxxxxxx #APIキーを追記
ビューで、config/credentials.yml.enc
ファイルの記述を読み取る
<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キー
を本番環境に渡せていないのは盲点でした。
キーやパスワードの管理方法について、セキュリティ面を見直すいい機会とはなりました。
間違っている点がありましたら、ご指摘いただけるとありがたいです。