É possível se conectar a uma instância do Redis a partir das funções do Cloud Run usando o acesso VPC sem servidor.
Configuração
Essas etapas podem ser ignoradas se você já tiver instalado a Google Cloud CLI e criado uma instância do Redis.
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 ele está anexado à rede VPC autorizada da instância do Redis. Lembre-se do nome do conector.
Exemplo de função
Esta função de amostra estabelece uma conexão com uma instância do Redis a partir do Cloud Run functions.
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 a amostra no Cloud Run functions
Implante a função usando a 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
Substitua:
REGION
com a região em que você quer implantar a função.BASE_IMAGE
com a imagem de base da função. Por exemplo,go116
,nodejs16
oupython310
. Para mais informações, consulte Ambientes de execução de linguagem e imagens de base compatíveis.PROJECT_ID
com o ID do seu Google Cloud projeto.CONNECTOR_NAME
pelo nome do conector.REDIS_IP
eREDIS_PORT
com o endereço IP e o número da porta da sua instância do Redis.
Após a conclusão da implantação da função, recupere o URL dela:
gcloud run services describe visit-count \ --region=REGION \
É possível ver o contador aumentar sempre que você aciona a função enviando
uma solicitação GET
para o URL dela.