Déployer une fonction Cloud Run

Ce guide vous explique comment déployer une fonction Cloud Run 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 Run 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 des fonctions Cloud Run doivent disposer du rôle IAM Cloud Run functions Developer (Développeur Cloud Run 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. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  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. Le nom du service Cloud Run créé pour votre fonction remplacera les traits de soulignement par des traits d'union, et les lettres majuscules seront converties en minuscules. Par exemple, Function_1 sera nommé function-1 dans Cloud Run.

    • L'option --gen2 spécifie que vous souhaitez effectuer le déploiement sur Cloud Run Functions.

    • 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 Run Functions.

    • L'option --runtime spécifie l'environnement d'exécution de langage qui est utilisé par votre fonction. Cloud Run 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 Description du déclencheur
    --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 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.

    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 Run Functions dans la console Google Cloud.

    Accéder aux fonctions Cloud Run

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

  2. Cliquez sur Créer une fonction.

  3. Dans le champ Environnement, sélectionnez Cloud Run Functions.

  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. Le nom du service Cloud Run créé pour votre fonction remplacera les traits de soulignement par des traits d'union, et les lettres majuscules seront converties en minuscules. Par exemple, Function_1 sera nommé function-1 dans Cloud Run.

  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é :

    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 Cloud Run 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 Run 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 Run 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. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  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 Run 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 Run Functions puisse lire à partir d'un bucket Cloud Storage, l'agent de service Cloud Run Functions doit disposer de l'autorisation storage.objects.get. Si le bucket source se trouve dans le même projet que votre fonction, l'autorisation est accordée automatiquement. Si le bucket se trouve dans un autre projet, vous devez accorder manuellement l'autorisation à 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. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  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 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 Run Functions, consultez Déclencheurs Cloud Run Functions.

Fonction HTTP à partir du code source local

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

  • La fonction utilise nodejs20.
  • 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 nommée my-http-function dans la région us-central1, exécutez la commande suivante :

gcloud functions deploy my-http-function \
  --gen2 \
  --region=us-central1 \
  --runtime=nodejs20 \
  --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 python312.
  • 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 nommée my-pubsub-function dans la région europe-west1 et la déclencher à l'aide de messages dans le sujet Pub/Sub my-topic, exécutez la commande suivante :

gcloud functions deploy my-pubsub-function \
  --gen2 \
  --region=europe-west1 \
  --runtime=python312 \
  --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 java17.
  • 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 nommée my-storage-function dans la région asia-northeast1 et la déclencher à l'aide d'événements dans le bucket Cloud Storage my-bucket, exécutez la commande suivante :

gcloud functions deploy my-storage-function \
  --gen2 \
  --region=asia-northeast1 \
  --runtime=java17 \
  --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