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