頑張らない!でも諦めない!必死にならずにええかげん

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側でも利用するイメージです。

02_CloudSQL共用WordPress配置・AppEngine

CloudSQL共用WordPress配置・AppEngine

※Applicationの課金情報(Billing)はA,B共に有効である必要があります。
※Application B がBacket Aを参照するにはSocket API(課金登録で自動有効)が必要です。

 

普通に構成した場合にはそれぞれのアプリケーションごとに、
課金設定および有効化して利用します。

01_通常WordPress配置・AppEngine

通常WordPress配置・AppEngine

 

2014/09/20追記
その他の構成パターンを含めて以下でご紹介しています。

 

CloudSQL許可アプリケーションの指定

さて、アプリケーション(プロジェクト)から、
別のアプリケーションのCloudSQLを参照する場合には、
CloudSQL APIを有効にしているアプリケーション側でCloudSQLに対して、
アクセスを許可する「アプリケーションID(プロジェクトID)」を明示的に指定する必要があります。

CloudSQLに対してアクセスするアプリケーションを指定するには、
Google Developers Console にアクセスします。

Google Developers Consoleを表示してサイドメニューから[Cloud SQL]をクリックします。

CloudSQLのインスタンス一覧が表示されます。

アクセスしたいインスタンスをクリックします。

01_CloudSQLインスタンスの選択

CloudSQLインスタンスの選択

 

インスタンスの詳細が表示されたら上部のタブから[アクセス制御]をクリックします。

02_CloudSQLアクセス制御の選択

CloudSQLアクセス制御の選択

 

アクセス制御内の「承認済みのApp Engineアプリケーション」に、
表示されているアプリケーションID(プロジェクトID)が、
このCloudSQLインスタンスに対してアクセスができるアプリケーションです。

[新しく追加]をクリックするとさらに承認するアプリケーションを追加できます。

03_承認済みアプリケーションと追加

承認済みアプリケーションと追加

 

なお、承認アプリケーションが未登録の場合にはボタンのみが表示されます。
※以下は表示言語変更前の英語表示です。

04_承認済みアプリケーションの初回登録時

承認済みアプリケーションの初回登録時

 

[新しく追加]をクリックするとポップアップウィンドウにて、
アプリケーションID(プロジェクトID)を入力します。

[新しく追加]をクリックするとアプリケーションID(プロジェクトID)が登録されます。

05_承認するアプリケーションIDの入力

承認するアプリケーションIDの入力

 

CloudSQLを有効にしたアプリケーションからCloudSQLにアクセスする場合も、
CloudSQLを有効にしていないアプリケーションからアクセスする場合も、
基本的にはインスタンスIDを接続文字列に指定します。

06_インスタンスIDを接続文字列に指定

インスタンス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で接続してフルアクセスすることができます。

 

プロモーション(btm)

Google or AdMax Promotion (it)

さいごに

このようにして、CloudSQLのAPIを、
Google App Engine内すべてのアプリケーションIDで有効にする必要はありません。

1つ有効にしておくことで共用することも可能なのです。

どうせ従量課金なのにメリットはあるのか?という点ですが、
これは何をメリットと取るかという部分がありますが、

複数のアプリケーションで共通のマスタデータベースを参照して、
マスタを一元管理したいような場合には、
同じ構造・同じデータのテーブルをそれぞれのアプリケーションに対して持つ必要はなくなります。

 


*本ページ内に記載されされた各社ブランド、サービス名、商標、登録商標については、
各社ブランドのロゴや商標等に関する帰属についてをご確認ください


最後までお読みいただきありがとうございました。

アイキャッチ画像に利用させて頂いております、各社ブランドのロゴやシンボルに関しては、
各社ブランドのロゴや商標等に関する帰属についてをご確認頂けますようお願い致します。

AdMax Promotion

ブログ記事のご紹介
すべて展開 | すべて省略

Rakuten Promotion

ページ
すべて展開 | すべて省略

 - Google App Engine

  関連記事

eye_google_old
WordPress4.0日本語をGoogle App Engine for PHPにインストールする概要

Google or AdMax Promotion(it) 禁断の機能がau公式 …