Exécuter des fonctions à l'aide de l'émulateur Functions

L'émulateur Functions de Google Cloud CLI vous permet de gérer les instances locales de vos fonctions Cloud Run via la commande gcloud alpha functions local. Cela vous permet de déployer et de tester vos fonctions sur votre système local avant de les déployer dans l'environnement Google Cloud.

L'émulateur Functions utilise les packs de création Google Cloud pour empaqueter le code de votre fonction dans des images de conteneurs exécutables localement. Vous exécutez ensuite ces images localement avec Docker.

Conditions requises pour l'installation

Avant de continuer, assurez-vous que les éléments suivants sont installés:

Déployer votre fonction localement

Pour déployer votre fonction localement avec l'émulateur Functions, exécutez la commande gcloud functions :

Node.js

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=nodejs20

Python

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=python312

Go

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=go121

Java

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=java17

C#

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=dotnet6

Ruby

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=ruby32

PHP

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=php82

Remplacez :

  • LOCAL_DEPLOYMENT_NAME : nom sous lequel vous déployez votre fonction localement.
  • ENTRY_POINT : point d'entrée de votre fonction.

Vous pouvez continuer de configurer votre commande de déploiement avec les options facultatives suivantes:

Option Description
--port Port sur lequel écouter les requêtes (valeur par défaut : 8080).
--builder Nom du compilateur Buildpack à utiliser.

La valeur --builder est définie par défaut sur le compilateur App Engine pour le langage de votre fonction. Par exemple, il est défini par défaut sur gcr.io/gae-runtimes/buildpacks/google-gae-22/python/builder pour Python.

Lorsque vous utilisez la commande gcloud alpha pour la première fois, la commande gcloud vous invite à installer l'ensemble de commandes gcloud alpha.

Appeler votre fonction locale

Pour appeler votre fonction locale sans données, utilisez la commande suivante:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME

Remplacez LOCAL_DEPLOYMENT_NAME par le nom que vous souhaitez utiliser pour déployer votre fonction localement.

Pour inclure des données dans l'appel de votre fonction locale, choisissez l'onglet correspondant à votre type de fonction:

Fonction HTTP

Appelez votre fonction HTTP locale comme suit :

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
    --data='{"message": "MESSAGE"}'

Remplacez :

  • LOCAL_DEPLOYMENT_NAME : nom dans lequel déployer votre fonction localement.
  • ENTRY_POINT : point d'entrée de votre fonction.
  • MESSAGE : chaîne de texte à transmettre en tant que corps de la requête HTTP

Fonction CloudEvent

Pour appeler votre fonction CloudEvent locale, vous devez fournir un objet JSON CloudEvent décrivant l'événement déclencheur :

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
    --cloud-event="CLOUD_EVENT_JSON"

Remplacez :

  • LOCAL_DEPLOYMENT_NAME : nom dans lequel déployer votre fonction localement.
  • ENTRY_POINT : point d'entrée de votre fonction.
  • CLOUD_EVENT_JSON : chaîne encodée au format JSON en mode contenu structuré décrivant l'événement déclencheur. Pour obtenir plus d'informations et d'exemples, consultez la section CloudEvents : format d'événement JSON.

Voici un exemple de ligne de commande :

gcloud alpha functions local call my-function --cloud-event='{
 "specversion" : "1.0",
  "type" : "com.github.pull.create",
  "source" : "https://github.com/cloudevents/spec/pull",
  "subject" : "123",
  "id" : "ce",
  "time" : "2021-01-27T18:30:00Z", "data" : "{\n \"subscription\": \"projects\/test-project\/subscriptions\/my-subscription\",\n \"message\": {\n \"attributes\": {\n \"attr1\":\"attr1-value\"\n },\n \"data\": \"d29ybGQ=\",\n \"messageId\": \"message-id\",\n \"publishTime\":\"2021-02-05T04:06:14.109Z\",\n \"orderingKey\": \"ordering-key\"\n }\n}"
  }'

Pour en savoir plus sur la définition du format JSON pour CloudEvents, consultez la section Spécifications CloudEvent.

Supprimer le déploiement de la fonction locale

Supprimez le déploiement de votre fonction locale à l'aide de la commande suivante:

gcloud alpha functions local delete LOCAL_DEPLOYMENT_NAME

Remplacez LOCAL_DEPLOYMENT_NAME par le nom sous lequel déployer votre fonction localement.

Cette commande annule le déploiement de votre fonction, mais ne supprime pas le code de la fonction.

Étapes suivantes