É possível se conectar a uma instância do Redis a partir de funções do Cloud Run usando o acesso VPC sem servidor.
Configuração
Se você já tiver instalado a Google Cloud CLI e criado uma instância do Redis, pule essas etapas.
Instale a CLI gcloud e inicialize:
gcloud init
Siga o Guia de início rápido para criar uma instância do Redis. Anote a zona, o endereço IP e a porta da instância do Redis.
Configurar o acesso VPC sem servidor
Para se conectar das funções do Cloud Run à rede VPC autorizada da instância do Redis, configure o acesso VPC sem servidor.
Encontre a rede autorizada da instância do Redis executando o comando:
gcloud redis instances describe INSTANCE_ID --region REGION
Siga as instruções em Como criar um conector para criar um conector de acesso VPC sem servidor. Crie o conector na mesma região em que você quer implantar a função e verifique se o conector está anexado à rede VPC autorizada da instância do Redis. Lembre-se do nome do conector.
Exemplo de função
Esta função de exemplo estabelece uma conexão com uma instância do Redis a partir das funções do Cloud Run.
Clone o repositório da linguagem de programação pretendida e navegue até a pasta que contém o código de amostra:
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
O código de amostra incrementa um contador do Redis sempre que a função é acionada:
Go
Essa função usa o cliente github.com/gomodule/redigo/redis
.
Node.js
Essa função usa o módulo
redis
.
Python
Essa função usa o
pacote redis-py
.
Como implantar o exemplo nas funções do Cloud Run
Implante a função usando a 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
onde:
PROJECT_ID
é o código do seu projeto do Google Cloud;REGION
é a região em que você quer implantar a função.CONNECTOR_NAME
é o nome do conector.REDIS_IP
eREDIS_PORT
são o endereço IP e o número da porta da instância do Redis.
Após a conclusão da implantação da função, extraia o URL dela:
gcloud functions describe visit-count \ --gen2 \ --region=REGION \ --format="value(serviceConfig.uri)"
É possível conferir o aumento do contador sempre que você acionar a função enviando
uma solicitação GET
para o URL dela.