検証用にGCPの別プロジェクトでGAEを立ち上げWordpressを入れたのですが、この新規プロジェクトにCloudSQLインスタンスを作るとコストが余分に掛かってしまいます。
当ブログで既に稼働しているCloudSQLインスタンスに新たにスキーマを作り、そちらを利用すれば1つのCloudSQLインスタンスで済み費用も抑えれるので、方法はないかな?と調べてみました。
やりたい事はこんな感じです。
新しいプロジェクトのGEAのサービスアカウントに対し、CloudSQLの権限付与(IAM設定)をすれば実現可能となります。
設定手順は次の通りです。
新規作成プロジェクトのGAEのサービスアカウントを控える
新規作成プロジェクトを選択し、Cloud Consoleメニューの[IAMと管理]->[IAM]で表示されたGAEのサービスアカウント名を控えておきます。
既存プロジェクトのIAM設定でCloudSQLの権限を付与
1.既存プロジェクトを選択し、Cloud Consoleメニューの[IAMと管理]->[IAM]から[追加]をクリックします。
2.ロール「CloudSQL クライアント」を選択し、新しいメンバー欄に控えておいたGAEのサービスアカウントを入力後、[保存]をクリックします。
新規作成プロジェクトのアプリケーション設定ファイルにDB接続情報を記述
新規作成プロジェクトのGAEアプリケーション設定ファイルに
- 既存プロジェクトのCloudSQLインスタンス名
- 接続スキーマ名
- ユーザーID
- パスワード
を記述し、アプリケーションをデプロイ、実行すれば既存プロジェクト側のCloudSQLインスタンスに接続出来るようになります。
※Wordpressの場合はwp-config.phpとなります。
まとめ
- プロジェクトを跨ぐリソースへのアクセスについて、IAMやサービスアカウントをどのように使うか?という実例になったと思います。
- 今回はGAEでしたが、コンピューティングサービスがGCE,CKE,CloudRunだった場合も同様の設定になるんじゃないかな?と思います。
- 年内GA予定のServerless NEGでGAEやCloud Runを冗長構成にする場合、この記事と同じ設定にすれば運用出来そうです。