You can connect to a Redis instance from Cloud Run functions by using Serverless VPC Access.
Setup
If you have already installed the Google Cloud CLI and have created a Redis instance, you can skip these steps.
Install the gcloud CLI and initialize:
gcloud init
Follow the Quickstart Guide to create a Redis instance. Take note of the zone, IP address, and port of the Redis instance.
Configuring Serverless VPC Access
To connect from your Cloud Run functions to your Redis instance's authorized VPC network, you must set up Serverless VPC Access.
Find your Redis instance's authorized network by running the command:
gcloud redis instances describe INSTANCE_ID --region REGION
Follow the instructions at Creating a connector to create a Serverless VPC Access connector. Make sure you create the connector in the same region where you want to deploy your function, and make sure the connector is attached to the Redis instance's authorized VPC network. Remember the name of the connector.
Sample function
This sample function establishes a connection to a Redis instance from Cloud Run functions.
Clone the repository for your desired programming language and navigate to the folder that contains the sample code:
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
The sample code increments a Redis counter every time the function is triggered:
Go
This function uses the
github.com/gomodule/redigo/redis
client.
Node.js
This function uses the redis
module.
Python
This function uses the
redis-py
package.
Deploying the sample to Cloud Run functions
Deploy the function using the Google Cloud CLI:
Go
gcloud run deploy visit-count \ --region=REGION \ --source=. \ --base-image=BASE_IMAGE \ --function=VisitCount \ --vpc-connector=projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME \ --set-env-vars=REDISHOST=REDIS_IP,REDISPORT=REDIS_PORT
Node.js
gcloud run deploy visit-count \ --region=REGION \ --source=. \ --base-image=BASE_IMAGE \ --entry-point=visitCount \ --vpc-connector=projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME \ --set-env-vars=REDISHOST=REDIS_IP,REDISPORT=REDIS_PORT
Python
gcloud run deploy visit-count \ --region=REGION \ --source=. \ --base-image=BASE_IMAGE \ --function=visit_count \ --vpc-connector=projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME \ --set-env-vars=REDISHOST=REDIS_IP,REDISPORT=REDIS_PORT
Replace:
REGION
with the region where you want to deploy the function.BASE_IMAGE
with the base image for the function, for example,go116
,nodejs16
, orpython310
. For more information, see Supported language runtimes and base images for more information.PROJECT_ID
with your Google Cloud project's ID.CONNECTOR_NAME
with the name of your connector.REDIS_IP
andREDIS_PORT
with the IP address and port number of your Redis instance.
After the function deployment finishes, retrieve your function's URL:
gcloud run services describe visit-count \ --region=REGION \
You can see the counter increase every time you trigger the function by sending
a GET
request to its URL.