GormでCloud SQLに接続する
Cloud RunにGoで作成したAPIをデプロイしようと思ったところ、うまくいかなかった。
調査してみたところ、データーベースに接続できずに落ちているっぽいとのこと。
ちょっとなんでかわからないけど(今思い返せば、Docker起動していた? という不安がある)、ローカルのDBに接続できないので、いずれ接続する予定だったので、Cloud SQLに接続し、それでCloud Runにデプロイしてみようという風に思い立った。
Cloud SQLに登録する
Cloud Run から Cloud SQL for MySQL に接続するがある。
公式があるので、こちらを参考にする。
なお、今回サーバーはローカル(net/http)で起動することにする。
インスタンスを作成する
- Google Cloud コンソールで Cloud SQL の [インスタンス] (https://console.cloud.google.com/sql?hl=ja&_ga=2.145632700.968950133.1716041931-758618644.1700836939)ページに移動する。
- インスタンスを作成 をクリック。
- [MySQL を選択] をクリック。
インスタンスを作成するには、まず Compute Engine API を有効にする必要があります。
という警告が出るので、APIを有効にする。
インスタンスID、パスワード、を登録。
My SQLのバージョンを8にし、Cloud SQL のエディションはEnterpriseにする。
プリセットをいったん開発環境にして、リレージョンを東京、ゾーンをシングルに設定する。
構成オプションを開き、とりあえず一番小さい1 vCPU、3.75 GBを選択してみる。
で、インスタンスを作成する。
構成オプションはとりあえず、最小で不満があればあげていく方法で問題ないらしい。
DBの作成
インスタンスのデータベースにいき、データーベースの作成をクリックする。
今回インスタンスの作成をし、データーベースの作成をしていなかったので、エラーが出続け、悩まされた。
接続を試みる
まず接続をしてみたところ、
というエラーが出た。
どうやら認証情報が見つかりませんとのこと。
対象のディレクトリでgcloud auth application-default loginを実行し、ログインを完了させた。
ソースコードは公式を参考に下記のように。
これで実行したところ、
無事に接続できた。
課金具合が予想を超えている
Cloud SQLの課金体系がいまいち理解できていない。
ただコンソールを見る限り、想像を超える課金が行われている。
使用していない時はインスタンスを停止してその場を凌ぐけど、しっかりと理解をしたい。
Discussion in the ATmosphere