É possível se conectar a uma instância do Redis a partir do Cloud Functions usando o acesso VPC sem servidor.
Instalação
Se você já instalou o Google Cloud CLI e criou uma instância do Redis, pode pular estas 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 do Cloud Functions à 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. Verifique se você criou o conector na mesma região em que quer implantar a função e se ele está conectado à 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 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 exemplo de código 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 Functions
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 sua instância do Redis.
Depois que a implantação da função for concluída, recupere o URL da função:
gcloud functions describe visit-count \ --gen2 \ --region=REGION \ --format="value(serviceConfig.uri)"
Para ver o aumento no contador, envie uma solicitação GET
para o URL sempre que acionar a função.