3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Cloud SQL Auth Proxyを利用してCloud SQLをローカル環境っぽく利用してみた

Posted at

 Cloud SQLはGoogle Cloudが提供するフルマネージドのデータベースサービスです。利用できるデータベースもMySQL、PostgreSQL、SQL Serverなど主要どころが選択可能となっています。このデータベースサービスですが、以下の通り利用方法が複数あります。
接続方式

  • パブリックIPを利用した接続
  • プライベートIPを利用した接続

接続許可方式

  • Cloud SQL Auth SQL
  • SSL/TSL証明書
  • データベースの組み込み認証(ユーザ、パスワード)

 今回は「Cloud SQL Auth SQL」を利用してローカルから安全、手軽に接続する方法を紹介したいと思います。

事前準備①

 接続対象であるCloud SQLインスタンスを作成します。今回データベースは、PostgreSQL12を選択しました。
CloudSQL1.JPG

 バージョンが古いのは、現在別件で動作検証しているPythonパッケージの兼ね合いなので、あまりお気になさらず。あと、構成部分はCloud SQLの選択可能なもので一番安いものにしました。お金がもったいないのでお許しを・・・

事前準備②

 接続に必要なサービスアカウントを準備します。接続に必要な権限は「cloudsql.instances.connect」であり、この権限を含むロールは以下のものがあります。

  • Cloud SQLクライアント
  • Cloud SQL編集者
  • Cloud SQL管理者

 今回紹介する内容程度であれば、Cloud SQLクライアントで十分だと思います。ちなみに、私はCloud SQL管理者の権限で実行しました。

Cloud SQL Auth Proxyのダウンロード

  Googleのドキュメントに従ってcloud_sql_porxyをダウンロードします。OS別に手順が分かれているので、利用している環境に合わせてダウンロードしてください。
 また、ダウンロードしたファイルは作業フォルダに入れておくといいです。PATHを通してもいいですが、個人的にそこまでする必要はないかなーって感じです。

Cloud SQL Auth Proxy起動

 私の環境はWindowsなので、ここからはその前提でお読みください。Cloud SQL Auth Proxy起動に必要な情報は以下の通りです。

  • GCPのプロジェクト名
  • Cloud SQLのインスタンスが存在するリージョン名
  • Cloud SQLのインスタンス名
  • 利用ポート
  • サービスアカウントキーのパス

 上の情報をもとに、以下のコマンドでCloud SQL Auth Proxyを起動します。

connect-cloudsql.ps1
.\cloud_sql_proxy.exe -instances='プロジェクト名:リージョン名:インスタンス名=tcp:ポート番号' -credential_file='サービスアカウントキーファイルのパス'

 -instances引数の「プロジェクト名:リージョン名:インスタンス名」は、Cloud SQLの概要画面の接続名と同じなので、コピーするといいと思います。=以降は、自身の環境での未使用ポートを指定してください。私は今回11111ポートを利用しました。
 コマンドが地味に長いので、私はシェル化しています。実行すると以下のようなメッセージが出ます。

2022/05/02 07:43:43 using credential file for authentication; email=XXXXXXXXXXXXXX
2022/05/02 07:43:44 Listening on 127.0.0.1:11111 for プロジェクト名:リージョン名:インスタンス名
2022/05/02 07:43:44 Ready for new connections
2022/05/02 07:43:45 Generated RSA key in 1.0022478s

 これで準備完了です!!!

接続確認

 psqlとpgadminで動作確認したいと思います。

psqlでの接続確認

 以下のコマンドでデータベースに接続できました!

PS C:\Users\xxxxx> psql -h localhost -p 11111 -U postgres -d reserve_parking
ユーザ postgres のパスワード:
psql (13.2、サーバ 12.10)
"help"でヘルプを表示します。
reserve_parking=>

pgadminでの接続確認

以下の情報で接続設定を行います。ホスト名とポート番号を間違えないようにしてください。
CloudSQL2.JPG
CloudSQL3.JPG
 これで、saveを押すと・・・
CloudSQL4.JPG
 うまくデータベースを認識させることができました!

最後に

 なんとかうまくできました。今Webアプリを勉強中で、手軽に構築、削除できるDBが欲しかったので、非常に便利です。Dockerとかでもいいんですけどね。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?