Ce tutoriel vous explique comment écrire une fonction Cloud Run HTTP qui renvoie des résultats Spanner.
Objectifs
Rédiger, déployer et déclencher une fonction HTTP qui accède à Spanner.
Coûts
Ce document utilise Spanner et Cloud Run, qui sont des composants facturables de Google Cloud.
Pour en savoir plus sur le coût d'utilisation de Spanner, consultez la page Tarifs de Spanner.
Pour en savoir plus sur le coût d'utilisation de Cloud Run, y compris les appels sans frais, consultez les tarifs de Cloud Run.
Avant de commencer
Dans ce document, nous supposons que vous disposez d'une instance Spanner nommée
test-instanceet d'une base de données nomméeexample-dbqui utilise le schéma d'une application musicale. Pour obtenir des instructions sur la création d'une instance et d'une base de données avec le schéma d'application musicale, consultez la page Démarrage rapide avec la console ou les tutoriels de prise en main de Node.js ou Python.Activez les API Cloud Run et Cloud Build.
Installez et initialisez la gcloud CLI.
Si la gcloud CLI est déjà installée, mettez-la à jour en exécutant la commande suivante :
gcloud components updatePréparez votre environnement de développement :
Node.js
Consultez le guide de configuration de Node.js.
Python
Consultez le guide de configuration de Python.
Rôles requis
Pour obtenir les autorisations nécessaires pour déployer des services Cloud Run à partir de la source, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Développeur de source Cloud Run (
roles/run.sourceDeveloper) sur votre projet -
Consommateur d'utilisation du service (
roles/serviceusage.serviceUsageConsumer) sur le service Cloud Run -
Utilisateur du compte de service (
roles/iam.serviceAccountUser) sur l'identité du service -
Administrateur Spanner (
roles/spanner.admin) sur l'instance Spanner
Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre service Cloud Run communique avec des APIGoogle Cloud , telles que les bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.
Rôles pour le compte de service Cloud Build
Vous ou votre administrateur devez attribuer le rôle IAM suivant au compte de service Cloud Build.
Cliquez ici pour afficher les rôles requis pour le compte de service Cloud Build
Cloud Build utilise automatiquement le compte de service Compute Engine par défaut comme compte de service Cloud Build par défaut pour compiler votre code source et votre ressource Cloud Run, sauf si vous modifiez ce comportement. Pour que Cloud Build puisse créer vos sources, demandez à votre administrateur d'accorder le rôle Créateur Cloud Run (roles/run.builder) au compte de service Compute Engine par défaut sur votre projet :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Remplacez PROJECT_NUMBER par le numéro de votre projet Google Cloudet PROJECT_ID par l'ID de votre projet Google Cloud. Pour obtenir des instructions détaillées sur la recherche de votre ID et de votre numéro de projet, consultez la section Créer et gérer des projets.
L'attribution du rôle "Compte de service Cloud Run" au compte de service Compute Engine par défaut prend quelques minutes à se propager.
Rôles pour l'identité de service
Vous devez accorder à l'identité de service que vous utilisez pour le service Cloud Run le rôle IAM suivant.
- Lecteur de bases de données Spanner (
roles/spanner.databaseReader)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Préparer l'application
Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.gitVous pouvez également télécharger l'exemple en tant que fichier zip et l'extraire.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.gitVous pouvez également télécharger l'exemple en tant que fichier zip et l'extraire.
Accédez au répertoire contenant l'exemple de code Cloud Run Functions pour accéder à Spanner :
Node.js
cd nodejs-docs-samples/functions/spannerPython
cd python-docs-samples/functions/spannerConsultez l'exemple de code :
Node.js
Python
La fonction envoie une requête SQL pour extraire toutes les données
Albumsde votre base de données. La fonction est exécutée lorsque vous effectuez une requête HTTP sur le point de terminaison de la fonction.
Déployer la fonction
Pour déployer la fonction avec un déclencheur HTTP, exécutez la commande suivante dans le répertoire spanner :
Node.js
gcloud run deploy nodejs-spanner-function \
--source . \
--region REGION \
--function spannerQuickstart \
--base-image RUNTIME_ID \
--log-httpPython
gcloud run deploy python-spanner-function \
--source . \
--region REGION \
--function spanner_read_data \
--base-image RUNTIME_ID \
--log-httpRemplacez :
REGION par le nom de la régionGoogle Cloud dans laquelle vous souhaitez déployer votre fonction (par exemple,
us-west1).RUNTIME_ID par l'ID d'exécution approprié (par exemple,
nodejs22). Consultez Environnements d'exécution de langage et images de base compatibles.
Le déploiement de la fonction peut prendre jusqu'à deux minutes.
Notez la valeur url affichée lorsque le déploiement de la fonction est terminé. Vous l'utiliserez lorsque vous déclencherez la fonction.
Vous pouvez afficher les fonctions que vous avez déployées sur la page Cloud Run de la consoleGoogle Cloud . Cette page vous permet également de créer et de modifier des fonctions, et d'obtenir des détails ou des diagnostics sur vos fonctions.
Déclencher la fonction
Envoyez une requête HTTP à votre fonction :
curl URL
Remplacez URL par la valeur d'URL renvoyée lorsque le déploiement de votre fonction se conclut.
Si vous avez suivi un tutoriel de prise en main et rempli la base de données, le résultat de la requête SQL semblable aux lignes suivantes devrait s'afficher :
SingerId: 2, AlbumId: 2, AlbumTitle: Forever Hold Your Peace
SingerId: 1, AlbumId: 2, AlbumTitle: Go, Go, Go
SingerId: 2, AlbumId: 1, AlbumTitle: Green
SingerId: 2, AlbumId: 3, AlbumTitle: Terrified
SingerId: 1, AlbumId: 1, AlbumTitle: Total Junk
Vous pouvez également accéder à l'URL de la fonction dans votre navigateur pour visualiser le résultat de votre requête SQL.
Effectuer un nettoyage
Afin d'éviter que des frais supplémentaires ne soient facturés sur votre compte Google Cloud pour les ressources Spanner et Cloud Run Functions utilisées dans ce document :
Supprimez l'instance :
gcloud CLI instances delete test-instanceSupprimez le service Cloud Run que vous avez déployé dans ce tutoriel :
Node.js
gcloud run services delete nodejs-spanner-functionPython
gcloud run services delete python-spanner-function
Étapes suivantes
- Découvrez comment écrire des fonctions Cloud Run.
- Découvrez comment déployer des fonctions Cloud Run.
- Découvrez comment déclencher des fonctions Cloud Run.