Puedes conectarte a una instancia de Redis desde funciones de Cloud Run mediante Acceso a VPC sin servidor.
Configuración
Si ya has instalado la CLI de Google Cloud y has creado una instancia de Redis, puedes saltarte estos pasos.
Instala gcloud CLI e inicialízala:
gcloud init
Sigue la guía de inicio rápido para crear una instancia de Redis. Anota la zona, la dirección IP y el puerto de la instancia de Redis.
Configurar Acceso a VPC sin servidor
Para conectarte desde tus funciones de Cloud Run a la red VPC autorizada de tu instancia de Redis, debes configurar Acceso a VPC sin servidor.
Para encontrar la red autorizada de tu instancia de Redis, ejecuta el siguiente comando:
gcloud redis instances describe INSTANCE_ID --region REGION
Sigue las instrucciones de la sección Crear un conector para crear un conector de Acceso a VPC sin servidor. Asegúrate de crear el conector en la misma región en la que quieras implementar tu función y de que el conector esté conectado a la red VPC autorizada de la instancia de Redis. Recuerda el nombre del conector.
Función de ejemplo
Esta función de ejemplo establece una conexión con una instancia de Redis desde funciones de Cloud Run.
Clona el repositorio del lenguaje de programación que quieras y ve a la carpeta que contiene el código de ejemplo:
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
El código de muestra incrementa un contador de Redis cada vez que se activa la función:
Go
Esta función usa el cliente
github.com/gomodule/redigo/redis
.
Node.js
Esta función usa el módulo redis
.
Python
Esta función usa el paquete redis-py
.
Desplegar el ejemplo en Cloud Run Functions
Despliega la función con 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
Sustituye:
REGION
con la región en la que quieras implementar la función.BASE_IMAGE
con la imagen base de la función (por ejemplo,go116
,nodejs16
opython310
). Para obtener más información, consulta Runtimes e imágenes base de los idiomas admitidos.PROJECT_ID
por el ID de tu proyecto. Google CloudCONNECTOR_NAME
con el nombre del conector.REDIS_IP
yREDIS_PORT
con la dirección IP y el número de puerto de tu instancia de Redis.
Una vez que se haya completado la implementación de la función, obtén su URL:
gcloud run services describe visit-count \ --region=REGION \
Verás cómo aumenta el contador cada vez que activas la función enviando una solicitud GET
a su URL.