Premiers pas avec les fonctions Cloud Run (HTTP)

1. Introduction

Présentation

Les fonctions Cloud Run constituent une nouvelle façon de déployer des charges de travail à l'aide des paradigmes d'événements GCF connus et de la signature des fonctions. Au lieu d'utiliser nos configurations de déploiement et de compilation avisées, Cloud Run vous donne un contrôle direct sur le service sous-jacent créé dans Cloud Run.

Avec les fonctions Cloud Run, nous fournissons l'expérience utilisateur simple du déploiement source Cloud Run, ce qui donne aux développeurs un contrôle total sur leurs charges de travail à l'aide de configurations Cloud Run.

Cet atelier de programmation utilise des exemples Node.js dans les exemples ci-dessous. Toutefois, vous pouvez utiliser les exemples de code Cloud Functions 2e génération dans le langage 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 la gcloud CLI

Pour commencer, une version récente de la gcloud CLI doit être installée. Vous pouvez mettre à jour la CLI en exécutant la commande suivante:

gcloud components update

Configurer des variables d'environnement

Vous pouvez définir les 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 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

Tout d'abord, créez un répertoire pour le code source et utilisez la commande cd pour y accéder.

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

Ensuite, créez un fichier package.json avec le contenu suivant:

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

Ensuite, créez 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 une image de conteneur prête pour la production.

Remarques :

  • L'option "-source" permet d'indiquer à Cloud Run de créer la fonction dans un service exécutable basé sur des conteneurs.
  • L'option –function (new) est utilisée pour définir le point d'entrée du nouveau service comme signature de la fonction que vous souhaitez appeler
  • (facultatif) l'attribut –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 le jeton d'identité d'un principe doté 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 !

Félicitations, vous avez terminé l'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 accidentels (par exemple, si les services Cloud Run sont invoqués plus de fois que l'allocation mensuelle des appels Cloud Run dans le niveau sans frais), vous pouvez supprimer Cloud Run ou le projet créé à l'étape 2.

Pour supprimer la fonction Cloud Run, accédez à la console Cloud Run à l'adresse https://console.cloud.google.com/run et 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 cliquer sur "Supprimer". Si vous supprimez le projet, vous devrez le modifier dans Cloud SDK. Vous pouvez afficher la liste de tous les projets disponibles en exécutant gcloud projects list.