Accédez à plus de 700 ateliers et cours

Fonctions Cloud Run : Qwik Start

Atelier 1 heure universal_currency_alt 1 crédit show_chart Débutant
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Accédez à plus de 700 ateliers et cours

GSP1089

Logo des ateliers d'auto-formation Google Cloud

Présentation

Cloud Run Functions est l'offre Functions as a Service de Google Cloud. Elle est fournie avec un ensemble de fonctionnalités avancées, et optimisée par Cloud Run et Eventarc. Elle vous donne un contrôle plus avancé des performances et de l'évolutivité, ainsi qu'un contrôle accru sur l'environnement d'exécution des fonctions et les déclencheurs associés à plus de 90 sources d'événements.

Dans cet atelier, vous allez créer des fonctions Cloud Run qui répondent à des appels HTTP et qui sont déclenchées par des événements Cloud Storage et par Cloud Audit Logs. Vous allez également déployer plusieurs révisions d'une fonction Cloud Run et explorer de nouveaux paramètres.

Nouveautés

Cette nouvelle version de Cloud Run Functions améliore l'expérience FaaS fournie par Cloud Run, Cloud Build, Artifact Registry et Eventarc.

Infrastructure améliorée

  • Traitement allongé des requêtes : exécutez vos fonctions Cloud Run au-delà de la durée par défaut de cinq minutes. Cela facilite l'exécution de charges de travail de requêtes plus longues, comme le traitement de grands flux de données depuis Cloud Storage ou BigQuery. Pour les fonctions HTTP, la durée peut aller jusqu'à 60 minutes. Pour les fonctions basées sur des événements, elle peut actuellement atteindre jusqu'à 10 minutes.
  • Instances plus volumineuses : bénéficiez de 16 Go de RAM et de 4 vCPU (processeurs virtuels) sur Cloud Run Functions. Cela vous permet d'utiliser des charges de travail en mémoire exigeantes en ressources de calcul et favorise le traitement en parallèle.
  • Simultanéité : traitez jusqu'à 1 000 requêtes simultanées avec une seule instance de fonction, ce qui réduit les démarrages à froid et améliore la latence lors du scaling.
  • Nombre minimal d'instances : fournissez des instances préalablement démarrées pour réduire les démarrages à froid et assurez-vous que le temps d'amorçage de votre application n'affecte pas ses performances.
  • Répartition du trafic : prenez en charge plusieurs versions de vos fonctions, répartissez le trafic entre différentes versions et effectuez un rollback de votre fonction vers une version précédente.

Couverture étendue des événements et prise en charge de CloudEvents

  • Intégration d'Eventarc : Cloud Run Functions est désormais compatible en natif avec Eventarc, qui propose plus de 125 sources d'événements à l'aide de Cloud Audit Logs (BigQuery, Cloud SQL, Cloud Storage, etc.). Bien sûr, Cloud Run Functions continue de prendre en charge les événements provenant de sources personnalisées en les publiant directement dans Cloud Pub/Sub.
  • Format CloudEvent : toutes les fonctions basées sur des événements respectent les normes du secteur CloudEvents (cloudevents.io), quelle que soit la source, afin de garantir une expérience cohérente pour les développeurs. Les charges utiles sont envoyées via un CloudEvent structuré avec une charge utile cloudevent.data et implémentent la norme CloudEvent.

Objectifs

Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :

  • Écrire une fonction qui répond à des appels HTTP
  • Écrire une fonction qui répond à des événements Cloud Storage
  • Écrire une fonction qui répond à Cloud Audit Logs
  • Déployer plusieurs révisions d'une fonction Cloud Run
  • Éliminer les démarrages à froid grâce au nombre minimal d'instances
  • Configurer la simultanéité

Préparation

Avant de cliquer sur le bouton "Démarrer l'atelier"

Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.

Cet atelier pratique vous permet de suivre les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.

Pour réaliser cet atelier :

  • Vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome).
Remarque : Ouvrez une fenêtre de navigateur en mode incognito (recommandé) ou de navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
  • Vous disposez d'un temps limité. N'oubliez pas qu'une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Utilisez uniquement le compte de participant pour cet atelier. Si vous utilisez un autre compte Google Cloud, des frais peuvent être facturés à ce compte.

Démarrer l'atelier et se connecter à la console Google Cloud

  1. Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, une boîte de dialogue s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau "Détails concernant l'atelier", qui contient les éléments suivants :

    • Le bouton "Ouvrir la console Google Cloud"
    • Le temps restant
    • Les identifiants temporaires que vous devez utiliser pour cet atelier
    • Des informations complémentaires vous permettant d'effectuer l'atelier
  2. Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).

    L'atelier lance les ressources, puis ouvre la page "Se connecter" dans un nouvel onglet.

    Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.

    Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
  3. Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.

    {{{user_0.username | "Username"}}}

    Vous trouverez également le nom d'utilisateur dans le panneau "Détails concernant l'atelier".

  4. Cliquez sur Suivant.

  5. Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.

    {{{user_0.password | "Password"}}}

    Vous trouverez également le mot de passe dans le panneau "Détails concernant l'atelier".

  6. Cliquez sur Suivant.

    Important : Vous devez utiliser les identifiants fournis pour l'atelier. Ne saisissez pas ceux de votre compte Google Cloud. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés.
  7. Accédez aux pages suivantes :

    • Acceptez les conditions d'utilisation.
    • N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
    • Ne vous inscrivez pas à des essais sans frais.

Après quelques instants, la console Cloud s'ouvre dans cet onglet.

Remarque : Pour accéder aux produits et services Google Cloud, cliquez sur le menu de navigation ou saisissez le nom du service ou du produit dans le champ Recherche. Icône du menu de navigation et champ de recherche

Activer Cloud Shell

Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.

  1. Cliquez sur Activer Cloud Shell Icône Activer Cloud Shell en haut de la console Google Cloud.

  2. Passez les fenêtres suivantes :

    • Accédez à la fenêtre d'informations de Cloud Shell.
    • Autorisez Cloud Shell à utiliser vos identifiants pour effectuer des appels d'API Google Cloud.

Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET : . Le résultat contient une ligne qui déclare l'ID_PROJET pour cette session :

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.

  1. (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
  1. Cliquez sur Autoriser.

Résultat :

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Remarque : Pour consulter la documentation complète sur gcloud, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.

Tâche 1 : Activer les API

Avant de créer des fonctions Cloud Run, vous devez activer les API appropriées.

  • Exécutez la commande suivante pour activer tous les services nécessaires.
gcloud services enable \ artifactregistry.googleapis.com \ cloudfunctions.googleapis.com \ cloudbuild.googleapis.com \ eventarc.googleapis.com \ run.googleapis.com \ logging.googleapis.com \ pubsub.googleapis.com

Activer Gemini Code Assist dans Cloud Shell IDE

Vous pouvez utiliser Gemini Code Assist dans un environnement de développement intégré (IDE) tel que Cloud Shell pour obtenir des conseils sur le code ou résoudre des problèmes liés à votre code. Avant de pouvoir utiliser Gemini Code Assist, vous devez l'activer.

  1. Dans Cloud Shell, activez l'API Gemini pour Google Cloud à l'aide de la commande suivante :
gcloud services enable cloudaicompanion.googleapis.com
  1. Cliquez sur Ouvrir l'éditeur dans la barre d'outils Cloud Shell.
Remarque : Pour ouvrir l'éditeur Cloud Shell, cliquez sur Ouvrir l'éditeur dans la barre d'outils Cloud Shell. Vous pouvez passer de Cloud Shell à l'éditeur de code et inversement en cliquant sur Ouvrir l'éditeur ou sur Ouvrir le terminal selon le cas.
  1. Dans le volet de gauche, cliquez sur l'icône Paramètres. Dans la vue Paramètres, recherchez Gemini Code Assist.

  2. Recherchez l'option Geminicodeassist: Enable et assurez-vous que la case correspondante est cochée. Fermez ensuite les Paramètres.

  3. Cliquez sur Cloud Code - Aucun projet dans la barre d'état en bas de l'écran.

  4. Autorisez le plug-in comme indiqué. Si aucun projet n'est sélectionné automatiquement, cliquez sur Sélectionner un projet Google Cloud, puis choisissez .

  5. Vérifiez que votre projet Google Cloud () s'affiche dans le message d'état Cloud Code de la barre d'état.

Tâche 2 : Créer une fonction HTTP

Pour la première fonction, vous allez créer une fonction Node.js authentifiée qui répond à des requêtes HTTP et utiliser un délai avant expiration de 10 minutes pour montrer comment une fonction peut disposer de plus de temps pour répondre à des requêtes HTTP.

Créer

  1. Dans le terminal Cloud Shell, exécutez la commande suivante pour créer le dossier et les fichiers de l'application, puis accéder au dossier :
mkdir ~/hello-http && cd $_ touch index.js && touch package.json
  1. Dans la barre d'outils de Cloud Shell, cliquez sur le bouton Ouvrir l'éditeur.

  2. Ajoutez le code suivant au fichier hello-http/index.js, qui répond simplement aux requêtes HTTP :

const functions = require('@google-cloud/functions-framework'); functions.http('helloWorld', (req, res) => { res.status(200).send('HTTP with Node.js in GCF 2nd gen!'); });
  1. Ajoutez le contenu suivant au fichier hello-http/package.json pour spécifier les dépendances.
{ "name": "nodejs-functions-gen2-codelab", "version": "0.0.1", "main": "index.js", "dependencies": { "@google-cloud/functions-framework": "^2.0.0" } }
  1. Dans l'explorateur de fichiers, ouvrez le fichier index.js. Cette action active Gemini Code Assist, comme l'indique l'icône Gemini Code Assist : Actions intelligentes en haut à droite de l'éditeur.

  2. Cliquez sur l'icône Gemini Code Assist : Actions intelligentes Gemini Code Assist : Actions intelligentes, puis sélectionnez Expliquer.

  3. Gemini Code Assist ouvre un volet de chat avec le prompt prédéfini Explain this. Dans la zone de texte du chat Code Assist, remplacez le prompt prérempli par le suivant, puis cliquez sur Envoyer :

Tu es un développeur cloud expert chez Cymbal AI. Un nouveau membre de l'équipe a besoin de se familiariser avec cette fonction Cloud. Explique en détail les fichiers "index.js" et "package.json" du dossier "hello-http", en décrivant leurs principaux composants utilisés dans le code de l'application. Suggère éventuellement des améliorations, mais sans modifier ces fichiers.

Les explications détaillées du code index.js et package.json s'affichent dans le chat Gemini Code Assist.

Déployer

  1. Dans le terminal Cloud Shell, exécutez la commande suivante pour déployer la fonction et saisissez y dans le pop-up Appels non authentifiés :
gcloud functions deploy nodejs-http-function \ --gen2 \ --runtime nodejs22 \ --entry-point helloWorld \ --source . \ --region {{{project_0.default_region|Region}}} \ --trigger-http \ --timeout 600s \ --max-instances 1 Remarque : En cas d'erreur d'autorisation, veuillez attendre quelques minutes, puis réessayez d'effectuer le déploiement. L'activation des API prend quelques minutes.

Bien que cela ne soit pas forcément nécessaire pour cette étape, un délai avant expiration de 600 secondes est prévu. Cela permet à la fonction de disposer d'un délai plus long pour répondre aux requêtes HTTP.

  1. Une fois la fonction déployée, saisissez Fonctions Cloud Run dans la barre de recherche, puis cliquez sur le résultat. Vous êtes alors redirigé vers la console Cloud Run. Vérifiez que la fonction a bien été déployée.

Vérifier que la fonction a été déployée

Tester

  • Testez la fonction à l'aide de la commande suivante :
gcloud functions call nodejs-http-function \ --gen2 --region {{{project_0.default_region|Region}}}

Le message suivant doit s'afficher en réponse :

HTTP with Node.js in GCF 2nd gen!

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer une fonction HTTP

Tâche 3 : Créer une fonction Cloud Storage

Dans cette section, vous allez créer une fonction Node.js qui répond aux événements d'un bucket Cloud Storage.

Configurer

  • Pour utiliser les fonctions Cloud Storage, exécutez d'abord le code suivant afin d'attribuer le rôle IAM pubsub.publisher au compte de service Cloud Storage :
PROJECT_NUMBER=$(gcloud projects list --filter="project_id:{{{ project_0.project_id | PROJECT_ID }}}" --format='value(project_number)') SERVICE_ACCOUNT=$(gsutil kms serviceaccount -p $PROJECT_NUMBER) gcloud projects add-iam-policy-binding {{{ project_0.project_id | PROJECT_ID }}} \ --member serviceAccount:$SERVICE_ACCOUNT \ --role roles/pubsub.publisher

Créer

  1. Exécutez la commande suivante pour créer le dossier et les fichiers de l'application, puis accédez au dossier :
mkdir ~/hello-storage && cd $_ touch index.js && touch package.json
  1. Dans la barre d'outils de Cloud Shell, cliquez sur le bouton Ouvrir l'éditeur.

  2. Ajoutez le code suivant au fichier hello-storage/index.js, qui répond simplement aux événements Cloud Storage :

const functions = require('@google-cloud/functions-framework'); functions.cloudEvent('helloStorage', (cloudevent) => { console.log('Cloud Storage event with Node.js in GCF 2nd gen!'); console.log(cloudevent); });
  1. Ajoutez le contenu suivant au fichier hello-storage/package.json pour spécifier les dépendances :
{ "name": "nodejs-functions-gen2-codelab", "version": "0.0.1", "main": "index.js", "dependencies": { "@google-cloud/functions-framework": "^2.0.0" } }
  1. Dans l'explorateur de fichiers, ouvrez le fichier index.js dans le dossier "hello-storage". Cette action active Gemini Code Assist, comme l'indique l'icône Gemini Code Assist : Actions intelligentes en haut à droite de l'éditeur.

  2. Cliquez sur l'icône Gemini Code Assist : Actions intelligentes Gemini Code Assist : Actions intelligentes, puis sélectionnez Expliquer.

  3. Gemini Code Assist ouvre un volet de chat avec le prompt prédéfini Explain this. Dans la zone de texte du chat Code Assist, remplacez le prompt prérempli par le suivant, puis cliquez sur Envoyer :

Tu es un développeur cloud expert chez Cymbal AI. Un nouveau membre de l'équipe a besoin de se familiariser avec cette fonction Cloud. Explique en détail les fichiers "index.js" et "package.json" du dossier "hello-storage", en décrivant leurs principaux composants utilisés dans le code de l'application. Suggère éventuellement des améliorations, mais sans modifier ces fichiers.

Les explications détaillées du code index.js et package.json s'affichent dans le chat Gemini Code Assist.

Déployer

  1. Tout d'abord, exécutez la commande suivante pour créer le bucket Cloud Storage à utiliser pour créer des événements :
BUCKET="gs://gcf-gen2-storage-{{{ project_0.project_id | PROJECT_ID }}}" gsutil mb -l {{{project_0.default_region|Region}}} $BUCKET
  1. Exécutez la commande suivante pour déployer la fonction :
gcloud functions deploy nodejs-storage-function \ --gen2 \ --runtime nodejs22 \ --entry-point helloStorage \ --source . \ --region {{{project_0.default_region|Region}}} \ --trigger-bucket $BUCKET \ --trigger-location {{{project_0.default_region|Region}}} \ --max-instances 1 Remarque : Comme précédemment, si vous recevez une erreur d'autorisation, veuillez patienter quelques minutes, puis réessayez d'effectuer le déploiement. L'activation des API peut prendre quelques minutes.
  1. Une fois la fonction déployée, vérifiez qu'elle s'affiche dans la console Cloud Run.

Deux fonctions

Tester

  1. Exécutez la commande suivante pour importer un fichier dans le bucket afin de tester la fonction :
echo "Hello World" > random.txt gsutil cp random.txt $BUCKET/random.txt
  1. Exécutez la commande ci-dessous. L'événement CloudEvent reçu doit apparaître dans les journaux :
gcloud functions logs read nodejs-storage-function \ --region {{{project_0.default_region|Region}}} --gen2 --limit=100 --format "value(log)" Remarque : La génération des journaux peut prendre une minute.

Vous devriez obtenir un résultat semblable au suivant.

Résultat :

} traceparent: '00-c74cb472d1e78f7225b6f617a31d9c08-96f0380bb62be2c1-01' }, etag: 'CKOx1L3wofoCEAE=' crc32c: 'R1jUOQ==', mediaLink: 'https://storage.googleapis.com/download/storage/v1/b/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/o/random.txt?generation=1663625646643363&alt=media', md5Hash: '5Z/5eUEET4XfUpfhwwLSYA==', size: '12', timeStorageClassUpdated: '2022-09-19T22:14:06.657Z', storageClass: 'STANDARD', updated: '2022-09-19T22:14:06.657Z', timeCreated: '2022-09-19T22:14:06.657Z', contentType: 'text/plain', metageneration: '1', generation: '1663625646643363', bucket: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb', name: 'random.txt', selfLink: 'https://www.googleapis.com/storage/v1/b/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/o/random.txt', id: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/random.txt/1663625646643363', kind: 'storage#object', data: { bucket: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb', time: '2022-09-19T22:14:06.657124Z', subject: 'objects/random.txt', type: 'google.cloud.storage.object.v1.finalized', specversion: '1.0', source: '//storage.googleapis.com/projects/_/buckets/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb', id: '5693030851428996', { Cloud Storage event with Node.js in GCF 2nd gen!

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer une fonction Cloud Storage

Tâche 4 : Créer une fonction Cloud Audit Logs

Dans cette section, vous allez créer une fonction Node.js qui reçoit un événement Cloud Audit Logs lorsqu'une instance de VM Compute Engine est créée. En réponse, la fonction ajoute un libellé à la VM nouvellement créée, en spécifiant le créateur de la VM.

Identifier les VM Compute Engine nouvellement créées

Compute Engine émet deux journaux d'audit lorsqu'une VM est créée.

Le premier est émis au début de la création de la VM et se présente comme suit :

Journal d'audit 1

Le second est émis après la création de la VM et se présente comme suit :

Journal d'audit 2

Notez le champ d'opération avec les valeurs first: true et last: true. Le deuxième journal d'audit contient toutes les informations dont vous avez besoin pour étiqueter une instance. Vous devez donc utiliser le flag last: true pour le détecter dans Cloud Run Functions.

Configurer

Pour utiliser les fonctions Cloud Audit Logs, vous devez activer les journaux d'audit pour Eventarc. Vous devez également utiliser un compte de service avec le rôle eventarc.eventReceiver.

  1. Dans le menu de navigation, accédez à IAM et administration > Journaux d'audit.
Remarque : Vous pouvez ignorer l'avertissement concernant l'autorisation resourcemanager.folders.getIamPolicy manquante.
  1. Recherchez l'API Compute Engine et cochez la case à côté. Si vous ne trouvez pas l'API, recherchez-la sur la page suivante.

  2. Dans le panneau d'informations à droite, cochez les cases correspondant aux types de journaux Lecture administrateur, Lecture de données et Écriture de données, puis cliquez sur Enregistrer.

Cases à cocher "Lecture administrateur", "Lecture de données" et "Écriture de données"

  1. Attribuez le rôle IAM eventarc.eventReceiver au compte de service Compute Engine par défaut :
gcloud projects add-iam-policy-binding {{{ project_0.project_id | PROJECT_ID }}} \ --member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role roles/eventarc.eventReceiver

Obtenir le code

  1. Exécutez le code suivant pour cloner le dépôt contenant l'application :
cd ~ git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
  1. Dans la barre d'outils de Cloud Shell, cliquez sur le bouton Ouvrir l'éditeur.

  2. Dans l'explorateur de fichiers, accédez à eventarc-samples > gce-vm-labeler > gcf > nodejs > index.js.

  3. Ouvrez le fichier index.js. Cette action active Gemini Code Assist, comme l'indique l'icône Gemini Code Assist : Actions intelligentes en haut à droite de l'éditeur.

  4. Cliquez sur l'icône Gemini Code Assist : Actions intelligentes Gemini Code Assist : Actions intelligentes, puis sélectionnez Expliquer.

  5. Gemini Code Assist ouvre un volet de chat avec le prompt prédéfini Explain this. Dans la zone de texte du chat Code Assist, remplacez le prompt prérempli par le suivant, puis cliquez sur Envoyer :

Tu es un développeur cloud expert chez Cymbal AI. Un nouveau membre de l'équipe a besoin de se familiariser avec cette fonction Cloud. Explique en détail le fichier "index.js" en décrivant ses principaux composants utilisés dans le code de l'application. Suggère éventuellement des améliorations, mais sans modifier le fichier.

Le fichier index.js contient le code d'application qui reçoit le journal d'audit encapsulé dans un CloudEvent. Il extrait ensuite les détails de l'instance de VM Compute Engine et attribue une étiquette à l'instance de VM. N'hésitez pas à examiner index.js plus en détail par vous-même.

Les explications détaillées du code index.js s'affichent dans le chat Gemini Code Assist.

Déployer

  1. Dans le terminal Cloud Shell, exécutez la commande suivante pour accéder au répertoire de l'application :
cd ~/eventarc-samples/gce-vm-labeler/gcf/nodejs
  1. Exécutez la commande suivante pour déployer la fonction avec gcloud, comme précédemment. Notez que la fonction filtre les journaux d'audit pour les insertions Compute Engine avec le flag --trigger-event-filters :
gcloud functions deploy gce-vm-labeler \ --gen2 \ --runtime nodejs22 \ --entry-point labelVmCreation \ --source . \ --region {{{project_0.default_region|Region}}} \ --trigger-event-filters="type=google.cloud.audit.log.v1.written,serviceName=compute.googleapis.com,methodName=beta.compute.instances.insert" \ --trigger-location {{{project_0.default_region|Region}}} \ --max-instances 1 Remarque : Bien que le déclencheur de fonction du journal d'audit soit créé immédiatement, il peut s'écouler jusqu'à 10 minutes avant qu'il ne soit pleinement opérationnel.

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer une fonction Cloud Audit Logs

Tester

Pour tester votre fonction de journal d'audit, vous devez créer une VM Compute Engine dans la console Cloud. (Vous pouvez également créer des VM avec gcloud, mais il semble que cette méthode ne génère pas de journaux d'audit.)

  1. Dans le menu de navigation, accédez à Compute Engine > Instances de VM.

  2. Cliquez sur Créer une instance, définissez le nom de l'instance sur instance-1 et la zone sur .

  3. Conservez les valeurs par défaut de tous les autres champs, puis cliquez sur Créer.

Une fois la VM créée, l'étiquette creator ajoutée à la VM devrait s'afficher dans la section Informations générales de la console Cloud.

Étiquette de créateur

  1. Vérifiez que l'étiquette a été ajoutée à l'aide de la commande suivante :
gcloud compute instances describe instance-1 --zone {{{project_0.default_zone | "Zone"}}}

Vous devriez voir l'étiquette dans le résultat, comme dans l'exemple suivant.

Exemple de résultat :

... labelFingerprint: ULU6pAy2C7s= labels: creator: student-02-19b599a0f901 ...

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer une instance de VM

  1. Exécutez la commande suivante pour supprimer la VM. Lorsque vous y êtes invité, saisissez Y pour confirmer.
gcloud compute instances delete instance-1 --zone {{{project_0.default_zone | "Zone"}}}

Tâche 5 : Déployer différentes révisions

Cloud Run Functions est compatible avec plusieurs révisions de vos fonctions, ce qui vous permet de répartir le trafic entre différentes révisions et d'effectuer un rollback de votre fonction vers une version précédente. Dans cette section, vous allez déployer deux révisions de votre fonction Cloud Run.

Créer

  1. Exécutez la commande suivante pour créer le dossier et les fichiers de l'application, puis accédez au dossier :
mkdir ~/hello-world-colored && cd $_ touch main.py touch requirements.txt
  1. Ajoutez le code suivant au fichier hello-world-colored/main.py avec une fonction Python qui lit une variable d'environnement de couleur et répond avec Hello World sur un arrière-plan de cette couleur :
import os color = os.environ.get('COLOR') def hello_world(request): return f'<body style="background-color:{color}"><h1>Hello World!</h1></body>'

Déployer

  1. Exécutez la commande suivante pour déployer la première révision de la fonction avec un arrière-plan orange :
COLOR=orange gcloud functions deploy hello-world-colored \ --gen2 \ --runtime python39 \ --entry-point hello_world \ --source . \ --region {{{project_0.default_region|Region}}} \ --trigger-http \ --allow-unauthenticated \ --update-env-vars COLOR=$COLOR \ --max-instances 1

À ce stade, si vous testez la fonction en affichant le déclencheur HTTP (l'URI généré par la commande de déploiement exécutée précédemment) dans votre navigateur, vous devriez voir Hello World avec un arrière-plan orange :

Hello World orange

  1. Accédez à la page Fonctions Cloud Run. Vous serez alors redirigé vers la console Cloud Run. Cliquez sur la fonction hello-world-colored.

  2. Cliquez sur Modifier et déployer la nouvelle révision.

  3. Conservez toutes les valeurs par défaut, faites défiler la page vers le bas, puis sélectionnez l'onglet Variables et secrets. Dans la section Variables d'environnement, remplacez la variable d'environnement COLOR par yellow.

Révision de la fonction

  1. Cliquez sur Déployer.

Comme il s'agit de la dernière révision, si vous testez la fonction, vous devriez voir Hello World avec un arrière-plan jaune :

Hello World jaune

Cliquez sur Vérifier ma progression pour valider l'objectif. Déployer différentes révisions

Tâche 6 : Configurer un nombre minimal d'instances

Dans Cloud Run Functions, vous pouvez spécifier un nombre minimal d'instances de fonction à garder en attente et prêtes à livrer des requêtes. Cela permet de limiter le nombre de démarrages à froid. Dans cette section, vous allez déployer une fonction avec une initialisation lente. Vous constaterez le problème de démarrage à froid. Vous allez ensuite déployer la fonction avec la valeur minimale d'instance définie sur 1 pour éliminer le démarrage à froid.

Créer

  1. Exécutez la commande suivante pour créer le dossier et les fichiers de l'application, puis accédez au dossier :
mkdir ~/min-instances && cd $_ touch main.go touch go.mod
  1. Ajoutez le code suivant au fichier min-instances/main.go. Ce service Go dispose d'une fonction init qui met le service en veille pendant 10 secondes pour simuler une longue initialisation. Il comporte également une fonction HelloWorld qui répond aux appels HTTP :
package p import ( "fmt" "net/http" "time" ) func init() { time.Sleep(10 * time.Second) } func HelloWorld(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "Slow HTTP Go in GCF 2nd gen!") }
  1. Ajoutez le code suivant au fichier min-instances/go.mod. Il spécifie le chemin d'accès au module et la version du langage Go :
module example.com/mod go 1.23

Déployer

  1. Exécutez la commande suivante pour déployer la première révision de la fonction avec la valeur minimale d'instance par défaut de 0 :
gcloud functions deploy slow-function \ --gen2 \ --runtime go123 \ --entry-point HelloWorld \ --source . \ --region {{{project_0.default_region|Region}}} \ --trigger-http \ --allow-unauthenticated \ --max-instances 4
  1. Testez la fonction avec cette commande :
gcloud functions call slow-function \ --gen2 --region {{{project_0.default_region|Region}}}

Vous devriez observer un délai de 10 secondes (démarrage à froid) lors du premier appel, puis voir le message. Les appels suivants devraient être renvoyés immédiatement.

Slow HTTP Go in GCF 2nd gen!

Définir un nombre minimal d'instances

Pour éviter le démarrage à froid lors de la première requête, redéployez la fonction avec l'option --min-instances définie sur 1, en procédant comme suit :

  1. Accédez à la page Cloud Run dans la console, puis cliquez sur le service slow-function.

  2. Cliquez sur Modifier et déployer la nouvelle révision.

  3. Dans la section Scaling de révision, définissez le nombre minimal d'instances sur 1 et le nombre maximal d'instances sur 4.

  4. Conservez les valeurs par défaut des autres champs, puis cliquez sur Déployer.

Tester

  • Exécutez à nouveau la commande suivante pour tester la fonction :
gcloud functions call slow-function \ --gen2 --region {{{project_0.default_region|Region}}}

Vous ne devriez plus voir le délai de 10 secondes lors de la première requête. Grâce au nombre d'instances minimales, le problème de démarrage à froid pour la première invocation (après une longue période d'inactivité) est résolu. Pour en savoir plus, consultez la documentation sur l'utilisation d'un nombre minimal d'instances.

Cliquez sur Vérifier ma progression pour valider l'objectif. Configurer un nombre minimal d'instances

Tâche 7 : Créer une fonction avec simultanéité

Dans Cloud Run Functions, une instance de fonction gère une requête simultanée par défaut, mais vous pouvez spécifier le nombre de requêtes simultanées qu'une instance peut traiter en même temps. Cela permet également d'éviter les démarrages à froid, car il n'est pas nécessaire de créer une instance de fonction pour chaque requête parallèle.

Dans cette section, vous allez utiliser la fonction avec initialisation lente créée à l'étape précédente. Vous lui enverrez 10 requêtes et vous constaterez à nouveau le problème de démarrage à froid, car de nouvelles instances de fonction doivent être créées pour gérer les requêtes.

Pour résoudre le problème de démarrage à froid, vous allez déployer une autre fonction avec une valeur de simultanéité de 100. Vous constaterez que les 10 requêtes ne provoquent plus de démarrage à froid et qu'une seule instance de fonction peut gérer toutes les requêtes.

Tester sans simultanéité

  1. Utilisez la commande d'installation suivante pour installer hey dans Cloud Shell :
sudo apt install hey
  1. Exécutez la commande suivante pour obtenir l'URL de la fonction et l'enregistrer en tant que variable d'environnement :
SLOW_URL=$(gcloud functions describe slow-function --region {{{project_0.default_region|Region}}} --gen2 --format="value(serviceConfig.uri)")
  1. Utilisez un outil de benchmarking Open Source intitulé hey pour envoyer 10 requêtes simultanées à la fonction lente.
hey -n 10 -c 10 $SLOW_URL

Dans le résultat de hey, vous devriez constater que certaines requêtes prennent du temps.

Résultat :

Summary: Total: 10.9053 secs Slowest: 10.9048 secs Fastest: 0.4439 secs Average: 9.7930 secs Requests/sec: 0.9170 Total data: 310 bytes Size/request: 31 bytes Response time histogram: 0.444 [1] |■■■■ 1.490 [0] | 2.536 [0] | 3.582 [0] | 4.628 [0] | 5.674 [0] | 6.720 [0] | 7.767 [0] | 8.813 [0] | 9.859 [0] | 10.905 [9] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

Cela est dû au fait que davantage d'instances de fonction sont créées pour traiter les requêtes. Si vous vérifiez le nombre d'instances actives pour la fonction, vous devriez également constater que plusieurs instances ont été créées à un moment donné et qu'elles sont à l'origine du problème de démarrage à froid.

Graphique des instances actives

  1. Exécutez la commande suivante pour supprimer la fonction. Lorsque vous y êtes invité, saisissez Y pour confirmer.
gcloud run services delete slow-function --region {{{project_0.default_region | "Region"}}}

Déployer

  • Exécutez la commande suivante pour déployer une nouvelle fonction identique à la précédente. Une fois la fonction déployée, vous augmenterez sa simultanéité :
gcloud functions deploy slow-concurrent-function \ --gen2 \ --runtime go123 \ --entry-point HelloWorld \ --source . \ --region {{{project_0.default_region|Region}}} \ --trigger-http \ --allow-unauthenticated \ --min-instances 1 \ --max-instances 4

Définir la simultanéité

À présent, définissez la simultanéité du service Cloud Run sous-jacent pour la fonction sur 100 (le maximum est de 1 000). Cela garantit qu'au moins 100 requêtes peuvent être traitées par une seule instance de fonction.

  1. Dans le menu de navigation, accédez à Cloud Run.

  2. Cliquez sur le service slow-concurrent-function.

  3. Cliquez sur Modifier et déployer la nouvelle révision.

  4. Dans la section Ressources, définissez le CPU sur 1.

  5. Sous Requêtes, définissez le nombre maximal de requêtes simultanées par instance sur 100.

  6. Sous Scaling de révision, définissez le nombre maximal d'instances sur 4.

  7. Conservez les valeurs par défaut des autres champs, puis cliquez sur Déployer.

Tester avec la simultanéité

  1. Une fois votre fonction déployée, exécutez la commande suivante pour obtenir l'URL de la nouvelle fonction et l'enregistrer en tant que variable d'environnement :
SLOW_CONCURRENT_URL=$(gcloud functions describe slow-concurrent-function --region {{{project_0.default_region|Region}}} --gen2 --format="value(serviceConfig.uri)")
  1. Utilisez maintenant hey pour envoyer 10 requêtes simultanées :
hey -n 10 -c 10 $SLOW_CONCURRENT_URL

Dans le résultat de hey, vous devriez voir que toutes les requêtes sont traitées rapidement.

Résultat :

Summary: Total: 0.0652 secs Slowest: 0.0651 secs Fastest: 0.0619 secs Average: 0.0636 secs Requests/sec: 153.3751 Total data: 280 bytes Size/request: 28 bytes Response time histogram: 0.062 [1] |■■■■■■■■■■■■■■■■■■■■ 0.062 [1] |■■■■■■■■■■■■■■■■■■■■ 0.063 [0] | 0.063 [0] | 0.063 [0] | 0.063 [1] |■■■■■■■■■■■■■■■■■■■■ 0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 0.065 [0] | 0.065 [1] |■■■■■■■■■■■■■■■■■■■■

Une seule instance de fonction a pu gérer toutes les requêtes, et le problème de démarrage à froid a été éliminé grâce à l'augmentation de la simultanéité. Pour en savoir plus, consultez la documentation sur la simultanéité.

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer une fonction avec simultanéité

Félicitations !

Dans cet atelier, vous avez déployé plusieurs fonctions Cloud Run répondant à des appels HTTP, à des événements Cloud Storage et à Cloud Audit Logs. Vous avez ensuite déployé plusieurs révisions des services Cloud Run exécutant les fonctions, défini des valeurs de simultanéité et éliminé les démarrages à froid grâce au nombre d'instances minimal.

Étapes suivantes et informations supplémentaires

Pour en savoir plus sur les fonctions Cloud Run, consultez les ressources suivantes :

Formations et certifications Google Cloud

Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.

Dernière mise à jour du manuel : 19 août 2025

Dernier test de l'atelier : 19 août 2025

Copyright 2025 Google LLC. Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.

Avant de commencer

  1. Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
  2. Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
  3. En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.

Utilisez la navigation privée

  1. Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
  2. Cliquez sur Ouvrir la console en navigation privée

Connectez-vous à la console

  1. Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
  2. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
  3. Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible

Un atelier à la fois

Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci

Utilisez la navigation privée pour effectuer l'atelier

Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.