Déployer une fonction Cloud

Ce guide vous explique comment déployer une fonction Cloud depuis le code source.

Le processus de déploiement utilise votre code source et vos paramètres de configuration, puis crée une image exécutable que Cloud Functions gère automatiquement afin de traiter les requêtes adressées à votre fonction.

Principes de base du déploiement

Les utilisateurs qui déploient Cloud Functions doivent disposer du rôle IAM de développeur Cloud Functions ou d'un rôle comprenant les mêmes autorisations. Consultez également la section Configuration supplémentaire pour le déploiement.

Sélectionnez un onglet pour obtenir des instructions sur le déploiement d'une fonction à l'aide de la gcloud CLI ou de la console Google Cloud.

gcloud

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Exécutez la commande gcloud functions deploy pour déployer une fonction :

    gcloud functions deploy YOUR_FUNCTION_NAME \
    [--gen2] \
    --region=YOUR_REGION \
    --runtime=YOUR_RUNTIME \
    --source=YOUR_SOURCE_LOCATION \
    --entry-point=YOUR_CODE_ENTRYPOINT \
    TRIGGER_FLAGS
    

    Le premier argument, YOUR_FUNCTION_NAME, est le nom de la fonction déployée. Le nom de la fonction doit commencer par une lettre suivie de 62 caractères au maximum (lettres, chiffres, traits d'union ou traits de soulignement) et doit se terminer par une lettre ou un chiffre.

    • L'option --gen2 spécifie que vous souhaitez déployer sur Cloud Functions (2nd gen). Cette option est nécessaire pour le déploiement initial d'une fonction de 2e génération. Consultez la comparaison des versions Cloud Functions pour obtenir une comparaison de Cloud Functions (1st gen) et de Cloud Functions (2nd gen).

    • L'option --region spécifie la région dans laquelle déployer votre fonction. Consultez la page Emplacements pour obtenir la liste des régions compatibles avec Cloud Functions.

    • L'option --runtime spécifie l'environnement d'exécution de langage qui est utilisé par votre fonction. Cloud Functions accepte plusieurs environnements d'exécution. Pour en savoir plus, consultez la page Environnements d'exécution.

    • L'option --source spécifie l'emplacement du code source de votre fonction. Pour en savoir plus, consultez les sections suivantes :

    • L'option --entry-point spécifie le point d'entrée de votre fonction dans votre code source. Il s'agit du code qui sera exécuté lors de l'exécution de votre fonction. La valeur de cette option doit être un nom de fonction ou un nom de classe complet qui existe dans votre code source. Pour en savoir plus, consultez la section Point d'entrée de fonction.

    • Pour spécifier le déclencheur de votre fonction, des options supplémentaires (représentées par TRIGGER_FLAGS ci-dessus) sont requises, en fonction du déclencheur que vous souhaitez utiliser :

    Options du déclencheur Trigger description
    --trigger-http Déclencher la fonction avec une requête HTTP(S) Pour en savoir plus, consultez la section Déclencheurs HTTP.
    --trigger-topic=YOUR_PUBSUB_TOPIC Déclenchez la fonction lorsqu'un message est publié dans le sujet Pub/Sub spécifié. Consultez la section Déclencheurs Pub/Sub pour plus d'informations.
    --trigger-bucket=YOUR_STORAGE_BUCKET Déclenchez la fonction lorsqu'un objet est créé ou écrasé dans le bucket Cloud Storage spécifié. Pour plus d'informations, consultez la section Déclencheurs Cloud Storage.
    --trigger-event-filters=EVENTARC_EVENT_FILTERS (2nd gen seulement) Déclenchez la fonction avec Eventarc lorsqu'un événement se produit et qu'il correspond aux filtres spécifiés. Nécessite la spécification de l'option --gen2. Pour plus d'informations et d'options, consultez la section Déclencheurs Eventarc.
    --trigger-event=EVENT_TYPE
    [--trigger-resource=RESOURCE]
    (1st gen seulement) Déclenchez la fonction lorsque l'événement spécifié se produit. La spécification d'une ressource est obligatoire pour certains types d'événements. Pour en savoir plus, consultez la section Déclencheurs compatibles avec Cloud Functions (1st gen).

    Vous pouvez éventuellement spécifier des options supplémentaires de configuration, de mise en réseau et de sécurité lorsque vous déployez une fonction.

    Pour en savoir plus sur la commande de déploiement et ses options, consultez la documentation sur gcloud functions deploy.

    Pour obtenir des exemples de commandes de déploiement, consultez la section Exemples de ligne de commande.

Console

  1. Accédez à la page de présentation de Cloud Functions dans la console Google Cloud :

    Accéder à Cloud Functions

    Assurez-vous que le projet Google Cloud sur lequel vous souhaitez déployer Cloud Functions est sélectionné.

  2. Cliquez sur Create function (Créer une fonction).

  3. Dans le champ Environnement, sélectionnez 1st gen ou 2nd gen. Consultez la comparaison des versions de Cloud Functions pour obtenir une comparaison de Cloud Functions (1st gen) et de Cloud Functions (2nd gen).

  4. Dans le champ Nom de la fonction, saisissez un nom pour votre fonction. Le nom de la fonction doit commencer par une lettre, suivie de 62 caractères au maximum (lettres, chiffres, traits d'union ou traits de soulignement), et doit se terminer par une lettre ou un chiffre.

  5. Dans le champ Région, sélectionnez une région dans laquelle déployer votre fonction.

  6. Dans la section Déclencheur, suivez les étapes en fonction de l'environnement sélectionné :

    • 1re génération
      1. Dans la section Authentification HTTPS, sélectionnez l'option appropriée selon que vous souhaitez autoriser les appels non authentifiés de votre fonction. Par défaut, l'authentification est requise. Pour en savoir plus, consultez la page Authentification pour l'appel.
      2. Dans le champ Type de déclencheur, sélectionnez un type de déclencheur. Pour en savoir plus, consultez la section Déclencheurs compatibles avec Cloud Functions (1st gen).
      3. Renseignez les champs supplémentaires du type de déclencheur sélectionné.
      4. Cliquez sur Save (Enregistrer).
    • 2e génération
      1. Dans le champ Type de déclencheur, sélectionnez le déclencheur que vous souhaitez utiliser :
        • Pour un déclencheur HTTPS, sélectionnez l'option appropriée selon que vous souhaitez autoriser les appels non authentifiés de votre fonction. Chaque fonction de 2nd gen possède un point de terminaison pour les déclencheurs HTTP(S). Par défaut, l'authentification est requise. Pour en savoir plus, consultez la page Authentification pour l'appel.
        • Pour une fonction basée sur des événements, choisissez l'une des options suivantes : Cloud Pub/Sub, Cloud Storage, Cloud Firestore ou Autre déclencheur. Pour plus d'informations, consultez la section Déclencheurs Eventarc.
        • Une fois les champs obligatoires renseignés, cliquez sur Enregistrer le déclencheur.
  7. Si vous le souhaitez, développez la section Environnement d'exécution, compilation... à la fin de la page pour obtenir des options de configuration et de sécurité supplémentaires.

  8. Cliquez sur Suivant pour passer à l'étape Code.

  9. Dans le champ Environnement d'exécution, sélectionnez l'environnement d'exécution de langage utilisé par votre fonction. Cloud Functions accepte plusieurs environnements d'exécution. Pour en savoir plus, consultez la page Environnements d'exécution.

  10. Dans le champ Point d'entrée, saisissez le point d'entrée de votre fonction dans votre code source. Il s'agit du code qui sera exécuté lors de l'exécution de votre fonction. La valeur de cette option doit être un nom de fonction ou un nom de classe complet qui existe dans votre code source. Pour plus d'informations, consultez la section Point d'entrée de fonction.

  11. Dans le champ Code source, sélectionnez l'option appropriée pour fournir le code source de la fonction. Pour en savoir plus, consultez les sections suivantes :

  12. Cliquez sur Déployer.

Une fois le déploiement terminé, les fonctions apparaissent avec une coche verte sur la page de présentation de Cloud Functions dans la console Google Cloud :

Fonctions déployées dans la console Cloud

Le déploiement initial d'une fonction peut prendre plusieurs minutes, pendant que l'infrastructure sous-jacente est provisionnée. Le redéploiement d'une fonction existante est plus rapide, et le trafic entrant est automatiquement migré vers la version la plus récente.

Déployer une fonction depuis votre ordinateur local

Cette section décrit comment déployer une fonction à partir du code source situé sur votre ordinateur local.

gcloud

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Suivez les instructions de déploiement ci-dessus à l'aide de la commande gcloud functions deploy.

    Pour l'option --source, spécifiez un chemin du système de fichiers local pour accéder au répertoire racine du code source de la fonction. Consultez la section Structure du répertoire source. Le répertoire de travail actuel est utilisé si cette option est omise.

    Vous pouvez également utiliser l'option --stage-bucket pour spécifier un bucket Cloud Storage dans lequel importer votre code source lors du déploiement.

    Lors de l'importation de votre code source, Cloud Functions exclut les fichiers inutiles via le fichier .gcloudignore.

Console

  1. Suivez les instructions de déploiement ci-dessus à l'aide de la console Google Cloud jusqu'à accéder au champ Code source.
  2. Dans le champ Code source, sélectionnez Importer un fichier ZIP.
  3. Dans le champ Bucket de destination, cliquez sur Parcourir pour sélectionner un bucket Cloud Storage dans lequel importer votre code source lors du déploiement.
  4. Dans le champ Fichier ZIP, cliquez sur Parcourir pour sélectionner un fichier ZIP à importer depuis votre système de fichiers local. Vos fichiers source de fonction doivent être situés à la racine du fichier ZIP. Consultez la section Structure du répertoire source.
  5. Cliquez sur Déployer.

Déployer une fonction depuis Cloud Storage

Cette section explique comment déployer une fonction à partir d'un code source situé dans un bucket Cloud Storage. Le code source doit être empaqueté sous la forme d'un fichier ZIP.

Pour que Cloud Functions puisse lire à partir d'un bucket Cloud Storage, assurez-vous que l'agent de déploiement dispose de l'autorisation storage.objects.get :

  • Dans Cloud Functions (1re génération), vous devez accorder cette autorisation au compte qui effectue le déploiement.
  • Dans Cloud Functions (2nd gen), c'est l'agent de service Cloud Functions qui a besoin de cette autorisation. Si le bucket source se trouve dans le même projet que votre fonction, cette autorisation est attribuée automatiquement. Si le bucket se trouve dans un autre projet, vous devez l'accorder manuellement à l'agent de service.

Consultez la page Utiliser des autorisations IAM de la documentation Cloud Storage pour en savoir plus sur le contrôle des accès aux buckets.

Avec cette autorisation, vous pouvez maintenant déployer une fonction à partir de Cloud Storage :

gcloud

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Suivez les instructions de déploiement ci-dessus à l'aide de la commande gcloud functions deploy.

    Pour l'option --source, spécifiez un chemin d'accès Cloud Storage commençant par gs://. L'objet du chemin d'accès doit être un fichier ZIP contenant le code source de la fonction. Vos fichiers source de fonction doivent être situés à la racine du fichier ZIP. Consultez la section Structure du répertoire source.

Console

  1. Suivez les instructions de déploiement ci-dessus à l'aide de la console Google Cloud jusqu'à accéder au champ Code source.
  2. Dans le champ Code source, sélectionnez Fichier ZIP depuis Cloud Storage.
  3. Dans le champ Emplacement Cloud Storage, cliquez sur Parcourir pour sélectionner un fichier ZIP dans Cloud Storage. Vos fichiers source de fonction doivent être situés à la racine du fichier ZIP. Consultez la section Structure du répertoire source.
  4. Cliquez sur Déployer.

Déployer une fonction depuis un dépôt source

Cette section décrit comment déployer une fonction depuis un code source situé dans Cloud Source Repositories. Le déploiement à partir de Cloud Source Repositories vous permet également de déployer du code hébergé dans un dépôt GitHub ou Bitbucket.

Pour pouvoir déployer le code à partir de Cloud Source Repositories, vous devez configurer un dépôt et éventuellement le connecter à votre dépôt GitHub ou Bitbucket.

Pour que Cloud Functions puisse lire à partir d'un dépôt source, l'agent de service Cloud Functions doit disposer du rôle IAM de lecteur de dépôt source (roles/source.reader) sur le dépôt. Si votre dépôt source se trouve dans le même projet que votre fonction, cette autorisation est incluse automatiquement. Si le dépôt source se trouve dans un projet différent, vous devez accorder manuellement l'autorisation.

Vous pouvez ensuite déployer une fonction à partir du dépôt :

gcloud

  1. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  2. Suivez les instructions de déploiement ci-dessus à l'aide de la commande gcloud functions deploy.

    Pour l'option --source, spécifiez une référence de dépôt source à l'emplacement du code source de votre fonction. Consultez la section Structure du répertoire source. La référence la plus élémentaire pour Cloud Source Repositories se présente au format suivant :

    https://source.developers.google.com/projects/PROJECT_ID/repos/REPOSITORY_NAME
    

    Dans le chemin d'accès précédent, PROJECT_ID correspond à votre ID de projet Google Cloud et REPOSITORY_NAME au nom de votre dépôt source. Avec ce chemin, le code source du répertoire racine du dépôt sur la révision taguée master sera utilisé.

    Pour effectuer un déploiement à partir d'une révision autre que master, ajoutez l'un des éléments suivants au chemin d'accès :

    • /revisions/REVISION_NAME
    • /moveable-aliases/MOVEABLE_ALIAS
    • /fixed-aliases/FIXED_ALIAS

    Pour déployer le code source à partir d'un répertoire autre que la racine du dépôt, spécifiez une révision, un alias mobile ou un alias fixe, puis ajoutez /paths/PATH_TO_YOUR_SOURCE_DIRECTORY au chemin.

Console

  1. Suivez les instructions de déploiement ci-dessus à l'aide de la console Google Cloud jusqu'à accéder au champ Code source.
  2. Dans le champ Code source, sélectionnez Cloud Source Repositories.
  3. Dans le champ Dépôt, saisissez le nom de votre dépôt source.
  4. Dans le champ Branche/Tag, sélectionnez Branche ou Tag en fonction de l'emplacement à partir duquel vous souhaitez effectuer le déploiement.
  5. Saisissez le nom de la branche ou du tag, le cas échéant.
  6. Dans le champ Répertoire contenant le code source, saisissez le chemin d'accès au répertoire contenant le code source de votre fonction dans votre dépôt. Consultez la section Structure du répertoire source.
  7. Cliquez sur Déployer.

Déployer une fonction depuis l'éditeur intégré de la console Google Cloud

Cette section décrit comment écrire et déployer une fonction directement depuis la console Google Cloud à l'aide de l'éditeur intégré fourni.

  1. Suivez les instructions de déploiement ci-dessus à l'aide de la console Google Cloud jusqu'à accéder au champ Code source.
  2. Dans le champ Source code (Code source), sélectionnez Inline Editor (Éditeur intégré).
  3. Utilisez l'éditeur fourni pour créer ou modifier des fichiers sources si nécessaire. Consultez la section Structure du répertoire source.
    • Le volet de gauche répertorie vos fichiers sources et vous permet de créer, de renommer et de supprimer des fichiers.
    • Le volet de droite est un éditeur de texte qui vous permet de modifier le contenu des fichiers.
  4. Cliquez sur Déployer.

Exemples de ligne de commande

Cette section présente des commandes de déploiement pour certains exemples de scénarios de déploiement.

Pour en savoir plus sur les différents déclencheurs compatibles avec Cloud Functions, consultez la page Déclencheurs Cloud Functions.

Fonction HTTP à partir du code source local

Supposons que vous disposiez d'une fonction HTTP comme suit :

  • La fonction utilise Node.js 16.
  • Le code source se trouve dans le répertoire de travail actuel (.).
  • Le point d'entrée du code s'appelle myHttpFunction.

Pour déployer la fonction sur Cloud Functions (2nd gen) avec le nom my-http-function dans la région us-central1, utilisez la commande suivante :

gcloud functions deploy my-http-function \
  --gen2 \
  --region=us-central1 \
  --runtime=nodejs16 \
  --source=. \
  --entry-point=myHttpFunction \
  --trigger-http

Fonction Pub/Sub à partir du code source dans Cloud Storage

Supposons que vous ayez une fonction basée sur des événements comme suit :

  • La fonction gère les événements de publication des messages Pub/Sub.
  • La fonction utilise Python 3.9.
  • Le code source se trouve dans Cloud Storage, au chemin d'accès suivant : gs://my-bucket/my_function_source.zip
  • Le point d'entrée du code s'appelle pubsub_handler.

Pour déployer la fonction sur Cloud Functions (2e génération) avec le nom my-pubsub-function dans la région europe-west1 et déclencher la fonction par des messages dans le sujet Pub/Sub my-topic, exécutez la commande suivante :

gcloud functions deploy my-pubsub-function \
  --gen2 \
  --region=europe-west1 \
  --runtime=python39 \
  --source=gs://my-bucket/my_function_source.zip \
  --entry-point=pubsub_handler \
  --trigger-topic=my-topic

Fonction Cloud Storage à partir du code source local

Supposons que vous ayez une fonction basée sur des événements comme suit :

  • La fonction gère les événements de suppression d'objets Cloud Storage.
  • La fonction utilise Java 11.
  • Le code source se trouve en local, au chemin d'accès suivant : ./functions/storage-function.
  • Le point d'entrée du code s'appelle myproject.StorageFunction.

Pour déployer la fonction sur Cloud Functions (2nd gen) avec le nom my-storage-function dans la région asia-northeast1, et pour que la fonction soit déclenchée par des événements dans le bucket Cloud Storage my-bucket, vous devez exécutez la commande suivante :

gcloud functions deploy my-storage-function \
  --gen2 \
  --region=asia-northeast1 \
  --runtime=java11 \
  --source=./functions/storage-function \
  --entry-point=myproject.StorageFunction \
  --trigger-event-filters="type=google.cloud.storage.object.v1.deleted" \
  --trigger-event-filters="bucket=my-bucket"

Étapes suivantes