
【Hasura】 GCP につなげてみる
こんにちは。CREFILの甲斐です。今回は Hasura の DB 接続方法の中の、Google Cloud Platform で PostgreSQL インスタンスを使用する方法についてご紹介します。
1. Hasura で New Project を作成する
Hasura にログインしたら、「New Project」より新しいプロジェクトを作成します。(今回はデフォルトで作成されたプロジェクトをそのまま使用) プロジェクトが作られたら、「Launch Console」より Hasura Consoleを開きます。

メニュー DATA > Data Manager > Manage > Connect Database を開くと、接続できる DB の一覧を確認できます。今回は PostgreSQL の予定ですが、GCP での作業後こちらの画面に戻って来ます。

2. GCP の SQL で PostgreSQL インスタンスを作成する
Google Cloud Platform > SQL より PostgresSQL インスタンスを作成します。

インスタンスの情報を入力します。
インスタンスID
任意のIDを設定
パスワード
デフォルトの管理ユーザー「postgres」のパスワードの設定

3. GCP > SQL > 接続からDBの接続設定を行う(Hasura Cloud IP をコピーして GCPのネットワーク設定を行う)
作成したインスタンス(ここではインスタンスID「demo-postgreSQL」)の接続設定を行います。
Google Cloud Platform > SQL > 接続よりパブリックIPにチェックを入れてネットワークを追加します。

Hasura Cloud の設定画面を開き、「Hasura Cloud IP」の値をコピーしてGCPの画面でネットワーク追加を行います。


4. Hasura Console で DB の URLを指定して接続設定を行う(GCP上のインスタンスのパブリックIPアドレスを使う)
Hasura Console を開きます。 DATA > Data Manager > Manage > Connect Database > Postgres を選択し、「Connect Existing Database」をクリックします。
任意の DB の名前を入力し、Connect Database via での Database URL設定へと進みます。

Database URL のプレースホルダーに「postgresql://username:password@hostname:port/postgres」という文字が見えます。
URLの構造は下記の通りです。
postgresql://<user-name>:<password>@<public-ip>:<postgres-port>/
<user-name> は特定のものを設定していない場合はデフォルトでpostgres となります。
<password> は基本的には DB を作成した時のパスワードです。
<public-ip> は、GCP上 で確認できる SQLインスタンスのパブリックIPアドレスを使います。
<postgres-port>についてですが、PostgreSQL用のデフォルトのポートは 「5432」 となります。

URL の設定が済んだら、Hasura Console 上の「Connect Database」ボタンクリックで設定を完了させます。
補足
実際に設定を行い、DB にデータを入れてみた後に少し放置していたら、Hasura で DB にアクセスできなくなっていました。

GCP で PostgreSQL インスタンスを更新し、再度 Hasura Console にアクセスします。

「Reload metadata」をクリックしてみます。

不具合もなくなりました。

最後に
今回は Google Cloud Platform の PostgreSQL インスタンスを使用する方法についてご紹介しました。
Haura の機能について個人学習をする場合はGCP であれば無料枠内、また、他にも無料で使える DB もあるので、用途に応じて使い分けできるかと思います。
ご紹介した内容が Hasura で DB接続する際の参考になれば幸いです。