Exécuter des fonctions à l'aide de l'émulateur Functions
L'émulateur de fonctions de Google Cloud CLI vous permet de gérer les instances locales de vos fonctions Cloud 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.
Cette fonctionnalité est compatible avec les fonctions 1re et 2e générations.
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
- Découvrez comment déployer une fonction Cloud sur Google Cloud.