サーバーレス VPC アクセスを使用すると、Cloud Run functions から Redis インスタンスに接続できます。
設定
Google Cloud CLI をインストール済みで Redis インスタンスを作成済みの場合は、次の手順をスキップできます。
gcloud CLI をインストールして初期化します。
gcloud init
クイックスタート ガイドの手順に沿って Redis インスタンスを作成します。Redis インスタンスのゾーン、IP アドレス、ポート番号をメモしておきます。
サーバーレス VPC アクセスの構成
Cloud Run functions から Redis インスタンスの承認済み VPC ネットワークに接続するには、サーバーレス VPC アクセスを設定する必要があります。
次のコマンドを実行して、Redis インスタンスの承認済みネットワークを確認します。
gcloud redis instances describe INSTANCE_ID --region REGION
コネクタの作成の手順に従って、サーバーレス VPC アクセス コネクタを作成します。関数をデプロイするリージョンと同じリージョン内にコネクタを作成していることを確認し、コネクタが Redis インスタンスで承認された VPC ネットワークにアタッチされていることを確認してください。コネクタの名前を覚えておいてください。
サンプル関数
Cloud Run functions から Redis インスタンスへの接続を確立するサンプル関数です。
使用するプログラミング言語のリポジトリのクローンを作成し、サンプルコードを含むフォルダに移動します。
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples
cd golang-samples/functions/memorystore/redis
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples
cd nodejs-docs-samples/functions/memorystore/redis
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
cd python-docs-samples/functions/memorystore/redis
サンプルコードは、関数がトリガーされるたびに Redis カウンタをインクリメントします。
Go
この関数は github.com/gomodule/redigo/redis
クライアントを使用します。
Node.js
この関数は redis
モジュールを使用します。
Python
この関数は redis-py
パッケージを使用します。
サンプルを Cloud Run functions にデプロイする
Google Cloud CLI を使用して関数をデプロイします。
Go
gcloud functions deploy visit-count \ --gen2 \ --region=REGION \ --runtime=go116 \ --source=. \ --entry-point=VisitCount \ --trigger-http \ --vpc-connector=projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME \ --set-env-vars=REDISHOST=REDIS_IP,REDISPORT=REDIS_PORT
Node.js
gcloud functions deploy visit-count \ --gen2 \ --region=REGION \ --runtime=nodejs16 \ --source=. \ --entry-point=visitCount \ --trigger-http \ --vpc-connector=projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME \ --set-env-vars=REDISHOST=REDIS_IP,REDISPORT=REDIS_PORT
Python
gcloud functions deploy visit-count \ --gen2 \ --region=REGION \ --runtime=python310 \ --source=. \ --entry-point=visit_count \ --trigger-http \ --vpc-connector=projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME \ --set-env-vars=REDISHOST=REDIS_IP,REDISPORT=REDIS_PORT
ここで
PROJECT_ID
は、Google Cloud プロジェクトの ID です。REGION
は、関数をデプロイするリージョンです。CONNECTOR_NAME
は、コネクタの名前です。REDIS_IP
とREDIS_PORT
は、Redis インスタンスの IP アドレスとポート番号です。
関数のデプロイが完了したら、関数の URL を取得します。
gcloud functions describe visit-count \ --gen2 \ --region=REGION \ --format="value(serviceConfig.uri)"
GET
リクエストを URL に送信することで、関数をトリガーするたびにカウンタが増加します。