Vous pouvez vous connecter à une instance Redis à partir de fonctions Cloud Run à l'aide de l'accès au VPC sans serveur.
Configuration
Si vous avez déjà installé la CLI Google Cloud et créé une instance Redis, vous pouvez ignorer ces étapes.
Installez la gcloud CLI et initialisez-la:
gcloud init
Suivez le Guide de démarrage rapide pour créer une instance Redis. Retenez la zone, l'adresse IP et le port de l'instance Redis.
Configurer l'accès au VPC sans serveur
Pour vous connecter à partir de vos fonctions Cloud Run au réseau VPC autorisé de votre instance Redis, vous devez configurer l'accès au VPC sans serveur.
Recherchez le réseau autorisé de votre instance Redis en exécutant la commande suivante :
gcloud redis instances describe INSTANCE_ID --region REGION
Suivez les instructions de la section Créer un connecteur pour créer un connecteur d'accès au VPC sans serveur. Veillez à créer le connecteur dans la même région que celle où vous souhaitez déployer votre fonction, et assurez-vous qu'il est associé au réseau VPC autorisé de l'instance Redis. Mémorisez le nom du connecteur.
Exemple de fonction
Cet exemple de fonction établit une connexion à une instance Redis à partir de fonctions Cloud Run.
Clonez le dépôt correspondant au langage de programmation souhaité et accédez au dossier contenant l'exemple de 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
L'exemple de code incrémente un compteur Redis chaque fois que la fonction est déclenchée :
Go
Cette fonction utilise le client github.com/gomodule/redigo/redis
.
Node.js
Cette fonction utilise la méthode redis
de ce module.
Python
Cette fonction utilise
Package redis-py
.
Déployer l'exemple dans des fonctions Cloud Run
Déployez la fonction à l'aide de la 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
où :
PROJECT_ID
est l'ID de votre projet Google Cloud.REGION
est la région dans laquelle vous souhaitez déployer la fonction.CONNECTOR_NAME
est le nom du connecteur.REDIS_IP
etREDIS_PORT
sont l'adresse IP et le numéro de port de votre instance Redis.
Une fois le déploiement de la fonction terminé, récupérez l'URL de votre fonction:
gcloud functions describe visit-count \ --gen2 \ --region=REGION \ --format="value(serviceConfig.uri)"
Vous pouvez voir le compteur augmenter chaque fois que vous déclenchez la fonction en envoyant une requête GET
à son URL.