Google Cloud PlatformでPostgreSQLを起動してHerokuから接続する方法
はじめに
今回は自分の運営するamazonの家具を寸法と価格から検索できる「家具サイズ検索」で使っているDBをGoogle Cloud Platform(以後GCP)に変更したので備忘録として記事にしておきます。
先日GCPの無料枠が変更されて様々なサービスの無料枠が強化されました。
qiita.com
公式
https://cloud.google.com/free/
https://cloud.google.com/free/docs/always-free-usage-limits
ここで注目したのが試用期間で使える$300クーポンが一年間使えるようになったこと
これまで無料枠が無かったCompute Engineの無料枠ができました。
1月分のGoogle Compute Engineの無料枠の詳細は以下のような感じです。
・USリージョンのf1-microが1機無料
・30 GBのHDD、5 GBのスナップショット
・North Americaからすべてのリージョンに対してのネットワーク利用1GB
起動方法
今回はGoogle Cloud Platformのこちらのテンプレートを利用します。
ここでリージョンをUSのどこかにしておけば無料枠の対象になるとおもいます。
デプロイ完了後上記のようなページが表示される。ここにあるuser名とpasswordを使って接続できます。IPはInstanceの欄をクリックした先に外部IPがあるのでそこに対して接続を設定します。 以下のようにheroku configを設定する。
heroku config:set DATABASE_URL="postgres://[user]:[passwd]@[IP]:5432/postgres"
以上で完了です。 DBを作ったりuser変えたりしたい場合は公式のドキュメントを見れば載っているのでやってみてもいいでしょう。
Bitnami PostgreSQL for Google Cloud Platform
dump
まずdumpファイルをscpで送っておきます.
gcloud compute --project "プロジェクトID" copy-files --zone "ゾーン名" ローカルのファイルパス GCEインスタンス名:コピー先パス
あとはsshで接続して普通にリストアします.聞かれるパスワードは先程のパスワードと同様.
psql -U postgres postgres < dump_file_name
追記[2017/12/11]
なんでか知りませんがデフォルトで設定できていたtpc:5432ポートの開放を自分でやらないとだめになっていました.
VPCネットーワーク設定でposgresのタグでtcp:5432を0.0.0.0/0に対して許可したものを作成します.
詳しい作り方は下を参照しました.
んで作成したGCEを編集でネットワークタグにてpostgresを追記して保存すれば繋げられるはずです.
なんでこんな改悪されたんや...