You can connect to a Redis instance from Cloud Run functions by using Direct VPC egress.
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 initFollow the Quickstart Guide to create a Redis instance. Take note of the zone, IP address, and port of the Redis instance.
Prepare VPC network egress for configuration
To connect to your Redis instance, your Cloud Run function must have access to the Redis instance's authorized VPC network.
To find the name of this network, run the following command:
gcloud redis instances describe INSTANCE_ID --region REGION --format "value(authorizedNetwork)"
Make a note of the network name.
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
To deploy the function:
Copy the
Dockerfileinto the source directory:cp cloud_run_deployment/Dockerfile .Build a container image using Cloud Build by running the following command:
gcloud builds submit --tag gcr.io/PROJECT_ID/visit-count
Deploy the container to Cloud Run by running the following command:
gcloud run deploy \ --image gcr.io/PROJECT_ID/visit-count \ --allow-unauthenticated \ --region REGION \ --network NETWORK \ --subnet SUBNET \ --set-env-vars REDISHOST=REDIS_IP,REDISPORT=REDIS_PORTwhere:
PROJECT_IDis your Google Cloud project's ID.REGIONis the region where your Redis instance is located.NETWORKis the name of the authorized VPC network that your Redis instance is attached to.SUBNETis the name of your subnet. The subnet must be/26or larger. Direct VPC egress supports RFC 1918, RFC 6598, and Class E IPv4 ranges.REDIS_IPandREDIS_PORTare 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.