サーバーレス VPC アクセスを使用すると、App Engine スタンダード環境から Redis インスタンスに接続できます。
設定
Google Cloud CLI をインストール済みで Redis インスタンスを作成済みの場合は、次の手順をスキップできます。
gcloud CLI をインストールして初期化します。
gcloud init
クイックスタート ガイドの手順に沿って Redis インスタンスを作成します。Redis インスタンスのゾーン、IP アドレス、ポート番号をメモしておきます。
サーバーレス VPC アクセスの構成
App Engine アプリから Redis インスタンスの承認済み VPC ネットワークに接続するには、サーバーレス VPC アクセスを設定する必要があります。
次のコマンドを実行して、Redis インスタンスの承認済みネットワークを確認します。
gcloud beta redis instances describe [INSTANCE_ID] --region [REGION]
コネクタの作成の手順に従って、サーバーレス VPC アクセス コネクタを作成します。コネクタは、アプリと同じリージョンに作成し、Redis インスタンスで承認済みの VPC ネットワークにコネクタが接続されていることを確認してください。コネクタの名前を覚えておいてください。
サンプル アプリケーション
このサンプル HTTP サーバー アプリケーションは、App Engine スタンダード環境のアプリから Redis インスタンスへの接続を確立します。
使用するプログラミング言語のリポジトリのクローンを作成し、サンプルコードを含むフォルダに移動します。
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples
cd golang-samples/memorystore/redis
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
cd java-docs-samples/memorystore/redis
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples
cd nodejs-docs-samples/memorystore/redis
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
cd python-docs-samples/memorystore/redis
このサンプル アプリケーションは、/
エンドポイントがアクセスされるたびに Redis カウンタをインクリメントします。
Go
このアプリケーションは、github.com/gomodule/redigo/redis
クライアントを使用します。次のコマンドを実行してインストールします。
go get github.com/gomodule/redigo/redis
Java
このアプリケーションは、Jetty 3.1 サーブレット ベースです。
Jedis ライブラリを使用します。
AppServletContextListener
クラスは、長期間有効な Redis 接続プールを作成するために使用されます。
VisitCounterServlet
クラスは、Redis カウンタをインクリメントするウェブ サーブレットです。
Node.js
このアプリケーションでは、redis
モジュールを使用します。
Python
このアプリケーションでは、ウェブサービスに Flask を使用し、redis-py
パッケージを使用して Redis インスタンスと通信します。
デプロイメントに向けたアプリケーションの準備
Redis インスタンスにアクセスするには、サーバーレス VPC アクセス コネクタを使用するように App Engine アプリを構成し、Redis インスタンスの接続の詳細を指定する必要があります。
App Engine アプリケーションをまだ持っていない場合は、作成します。
アプリの構成を更新して、サーバーレス VPC アクセス コネクタと Redis インスタンスの IP アドレスとポートを指定します。
Go
gae_standard_deployment/app.yaml
ファイルを更新します。詳細については、app.yaml 構成ファイルをご覧ください。
Java
gae_standard_deployment/appengine-web.xml
ファイルを更新して、サーバーレス VPC アクセス コネクタを指定します。src/main/resources/application.properties
ファイルを Redis インスタンスの IP アドレスとポートで更新します。アプリの構成の詳細については、appengine-web.xml リファレンスをご覧ください。
Node.js
gae_standard_deployment/app.yaml
ファイルを更新します。詳細については、app.yaml 構成ファイルをご覧ください。
Python
gae_standard_deployment/app.yaml
ファイルを更新します。詳細については、app.yaml 構成ファイルをご覧ください。
App Engine スタンダード環境へのアプリケーションのデプロイ
アプリケーションをデプロイするには:
必要な構成ファイルをソース ディレクトリにコピーします。
Go
app.yaml
ファイルとgo.mod
ファイルをソース ディレクトリにコピーします。cp gae_standard_deployment/{app.yaml,go.mod} .
Java
appengine-web.xml
ファイルをソース ディレクトリにコピーします。mkdir -p src/main/webapp/WEB-INF cp gae_standard_deployment/appengine-web.xml src/main/webapp/WEB-INF/
Node.js
app.yaml
ファイルをソース ディレクトリにコピーします。cp gae_standard_deployment/app.yaml .
Python
app.yaml
ファイルをソース ディレクトリにコピーします。cp gae_standard_deployment/app.yaml .
deploy コマンドを実行します。
Go
gcloud app deploy
Java
mvn package appengine:stage gcloud app deploy target/appengine-staging/app.yaml
Node.js
gcloud app deploy
Python
gcloud app deploy
デプロイが完了すると、コマンドにより、アプリにアクセスするための URL が出力されます。この URL にアクセスすると、ページが読み込まれるたびに Redis インスタンスのカウントが増加するのを確認できます。