Google App EngineのCloudSQLを他アプリから参照する設定
2014/11/22
Google App Engineでアプリケーションを作成したりWordPressを公開している際に、
異なるアプリケーション(プロジェクト)から既に利用している、
別アプリケーション(プロジェクト)のCloudSQLにあるデータを参照し、
アプリケーション間で共有したいような場合もあるかもしれません。
通常は1アプリケーション(プロジェクト)ごとにClousSQLのAPIを有効化して利用するのですが、
設定を行うことで別アプリケーション(プロジェクト)のデータベースを参照することができます。
なお、本投稿で表記する「アプリケーション(プロジェクト)」という表現は、
Google App Engine アプリケーションOverView と Google Developers Console で、
表現が異なっているために併記しています。
Google App Engine アプリケーションOverViewではアプリケーションIDとしているものが、
Google Developers ConsoleではプロジェクトIDと呼ばれています。
どちらも同じもので双方で同じアプリケーションの操作が行えます。
Google App EngineのCloudSQLを他アプリのWordPressから参照
CloudSQLは従量制の課金サービスである為、
別アプリケーションからCloudSQLを参照することでもトラフィック量は変わらないと思いますが、
予期せぬ課金が発生しないとも限りません。
ご利用は自己責任でお願いします。
WordPress構成イメージ
CloudSQLを共用してWordPressを構成した場合のイメージを図にしておきます。
Application A側で作成済のCloudSQLインスタンスを
Application B側でも利用するイメージです。
※Applicationの課金情報(Billing)はA,B共に有効である必要があります。
※Application B がBacket Aを参照するにはSocket API(課金登録で自動有効)が必要です。
普通に構成した場合にはそれぞれのアプリケーションごとに、
課金設定および有効化して利用します。
2014/09/20追記
その他の構成パターンを含めて以下でご紹介しています。
CloudSQL許可アプリケーションの指定
さて、アプリケーション(プロジェクト)から、
別のアプリケーションのCloudSQLを参照する場合には、
CloudSQL APIを有効にしているアプリケーション側でCloudSQLに対して、
アクセスを許可する「アプリケーションID(プロジェクトID)」を明示的に指定する必要があります。
CloudSQLに対してアクセスするアプリケーションを指定するには、
Google Developers Console にアクセスします。
Google Developers Consoleを表示してサイドメニューから[Cloud SQL]をクリックします。
CloudSQLのインスタンス一覧が表示されます。
アクセスしたいインスタンスをクリックします。
インスタンスの詳細が表示されたら上部のタブから[アクセス制御]をクリックします。
アクセス制御内の「承認済みのApp Engineアプリケーション」に、
表示されているアプリケーションID(プロジェクトID)が、
このCloudSQLインスタンスに対してアクセスができるアプリケーションです。
[新しく追加]をクリックするとさらに承認するアプリケーションを追加できます。
なお、承認アプリケーションが未登録の場合にはボタンのみが表示されます。
※以下は表示言語変更前の英語表示です。
[新しく追加]をクリックするとポップアップウィンドウにて、
アプリケーションID(プロジェクトID)を入力します。
[新しく追加]をクリックするとアプリケーションID(プロジェクトID)が登録されます。
CloudSQLを有効にしたアプリケーションからCloudSQLにアクセスする場合も、
CloudSQLを有効にしていないアプリケーションからアクセスする場合も、
基本的にはインスタンスIDを接続文字列に指定します。
WordPressでwp-config.phpにホスト名を指定する例は、以下のようになります。
(以下の場合)
アプリケーションID = sandbox-rensrv
インスタンス = YYYYYY
- データベースホスト名: ’:/cloudsql/sandbox-rensrv:YYYYYY’
WordPressのインストール手順については以下でご紹介しています。
ですので「sandbox-rensrv」としてアプリケーションIDを、
別アプリケーションから接続文字列で指定すると、
別アプリケーションからこのCloudSQLに対して接続が行えます。
CloudSQLのデータベース操作
CloudSQLインスタンスに対してのデータベース操作については、
以下でご紹介しています。
CloudSQLは外部接続可能
もっと言えば、CloudSQLへの接続はGoogle App Engine内のみで利用するものではありません。
しっかり外部からもアクセスをすることができます。
外部のアプリケーションからアクセスしている例ではありませんが、
MySQL Workbenchで接続してフルアクセスすることができます。
さいごに
このようにして、CloudSQLのAPIを、
Google App Engine内すべてのアプリケーションIDで有効にする必要はありません。
1つ有効にしておくことで共用することも可能なのです。
どうせ従量課金なのにメリットはあるのか?という点ですが、
これは何をメリットと取るかという部分がありますが、
複数のアプリケーションで共通のマスタデータベースを参照して、
マスタを一元管理したいような場合には、
同じ構造・同じデータのテーブルをそれぞれのアプリケーションに対して持つ必要はなくなります。
Google™はGoogle Inc. の登録商標(第4478963号及び第4906016号)です。
GoogleロゴはGoogle Inc. の国際登録商標です。
国際登録番号:881006及び926052及び1086299及び1091990及び1145934
関連記事
-
WordPress4.0日本語をGoogle App Engine for PHPにインストールする概要
Google or AdMax Promotion(it) 禁断の機能がau公式 …