Premiers pas avec les fonctions Cloud Run (HTTP)

1. Introduction

Présentation

Cloud Run Functions est une nouvelle façon de déployer des charges de travail à l'aide des paradigmes d'événement et de la signature de fonction GCF familiers. Au lieu d'utiliser notre processus de compilation et nos configurations de déploiement, Cloud Run Functions vous permet de contrôler directement le service sous-jacent créé sur Cloud Run.

Avec Cloud Run Functions, nous fournissons l'interface utilisateur simple du déploiement de code source Cloud Run, ce qui permet aux développeurs de contrôler entièrement leurs charges de travail à l'aide des configurations Cloud Run.

Cet atelier de programmation utilise des exemples nodejs. Toutefois, vous pouvez utiliser les exemples de code Cloud Functions 2nd gen dans la langue de votre choix :

Points abordés

  • Déployer une fonction Cloud Run déclenchée par une requête HTTP

2. Définir des variables d'environnement et activer des API

Mettre à niveau gcloud CLI

Tout d'abord, vous devez installer une version récente de la gcloud CLI. Vous pouvez mettre à jour la CLI en exécutant la commande suivante :

gcloud components update

Configurer des variables d'environnement

Vous pouvez définir des variables d'environnement qui seront utilisées tout au long de cet atelier de programmation.

PROJECT_ID=<YOUR_PROJECT_ID>
REGION=<YOUR_REGION, e.g. us-central1>

gcloud config set project $PROJECT_ID
SERVICE_NAME=crf-http-codelab

Activer les API

Avant de pouvoir commencer à utiliser cet atelier de programmation, vous devez activer plusieurs API. Cet atelier de programmation nécessite l'utilisation des API suivantes. Vous pouvez activer ces API en exécutant la commande suivante :

gcloud services enable run.googleapis.com \
    cloudbuild.googleapis.com \
    storage.googleapis.com \
    artifactregistry.googleapis.com

3. Créer une fonction HTTP

Commencez par créer un répertoire pour le code source et accédez-y.

mkdir -p cloud-run-functions/$SERVICE_NAME && cd $_

Créez ensuite un fichier package.json avec le contenu suivant :

{
    "dependencies": {
        "@google-cloud/functions-framework": "^3.0.0"
    }
}

Créez ensuite un fichier index.js avec le contenu suivant :

const functions = require("@google-cloud/functions-framework");

functions.http("helloHttp", (req, res) => {
    res.send(`Hello ${req.query.name || req.body.name || "World"}!`);
});

4. Déployer la fonction

Vous pouvez maintenant déployer la fonction Cloud Run en exécutant la commande suivante :

gcloud beta run deploy $SERVICE_NAME \
      --source . \
      --function helloHttp \
      --region us-central1 \
      --no-allow-unauthenticated

Cette commande utilise des buildpacks pour transformer le code source de votre fonction en image de conteneur prête pour la production.

Remarques :

  • L'indicateur "–source" est utilisé pour indiquer à Cloud Run de compiler la fonction dans un service basé sur un conteneur exécutable.
  • Le nouveau flag "–function" permet de définir le point d'entrée du nouveau service sur la signature de la fonction que vous souhaitez appeler.
  • (facultatif) l'option "–no-allow-unauthenticated" pour empêcher l'appel public de votre fonction

5. Tester la fonction

Une fois le déploiement terminé, l'URL du service s'affiche. Pour appeler la fonction, vous devez envoyer une requête authentifiée avec votre jeton d'identité ou celui d'un compte principal disposant du rôle Demandeur Cloud Run, comme indiqué ci-dessous :

# get the Service URL
SERVICE_URL="$(gcloud run services describe $SERVICE_NAME --region us-central1 --format 'value(status.url)')"

# invoke the service
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL

6. Félicitations !

Bravo ! Vous avez terminé cet atelier de programmation.

Nous vous recommandons de consulter la documentation sur les fonctions Cloud Run.

Points abordés

  • Déployer une fonction Cloud Run déclenchée par une requête HTTP

7. Effectuer un nettoyage

Pour éviter des frais involontaires (par exemple, si les services Cloud Run sont invoqués par inadvertance plus de fois que votre quota mensuel d'invocations Cloud Run dans le niveau sans frais), vous pouvez supprimer Cloud Run ou le projet que vous avez créé à l'étape 2.

Pour supprimer la fonction Cloud Run, accédez à la console Cloud Run à l'adresse https://console.cloud.google.com/run, puis supprimez le service crf-http-codelab.

Si vous choisissez de supprimer l'intégralité du projet, vous pouvez accéder à https://console.cloud.google.com/cloud-resource-manager, sélectionner le projet que vous avez créé à l'étape 2, puis choisir "Supprimer". Si vous supprimez le projet, vous devrez changer de projet dans votre SDK Cloud. Vous pouvez afficher la liste de tous les projets disponibles en exécutant gcloud projects list.