Ce tutoriel explique comment déployer une fonction HTTP en important un fichier ZIP de code source de fonction dans un bucket Cloud Storage, à l'aide de Terraform pour provisionner les ressources. Terraform est un outil Open Source qui vous permet de provisionner des ressources Google Cloud à l'aide de fichiers de configuration déclaratifs.
Ce tutoriel utilise une fonction HTTP Node.js comme exemple, mais il fonctionne également avec les fonctions HTTP Python, Go et Java. Les instructions sont identiques, quel que soit l'environnement d'exécution que vous utilisez.
Objectifs
- Découvrez comment utiliser Terraform pour déployer une fonction HTTP.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
Pour en savoir plus, consultez la page Tarifs de Cloud Functions.
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activer les API Cloud Functions, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage.
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud.
-
Activer les API Cloud Functions, Cloud Run, Cloud Build, Artifact Registry, and Cloud Storage.
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
-
Préparez votre environnement de développement.
Si la gcloud CLI est déjà installée, mettez-le à jour en exécutant la commande suivante :
gcloud components update
Configurer votre environnement
Dans ce tutoriel, vous exécutez des commandes dans Cloud Shell. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé avec des valeurs prédéfinies pour votre projet actuel. L'initialisation de Cloud Shell peut prendre quelques minutes.
Préparer l'application
Dans Cloud Shell, procédez comme suit :
Clonez le dépôt de l'exemple d'application sur votre instance Cloud Shell:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Accédez au répertoire qui contient l'exemple de code de Cloud Functions :
cd nodejs-docs-samples/functions/helloworld/helloworldHttp
L'exemple Node.js utilisé dans ce tutoriel est une fonction HTTP de base "Hello World".
Créez un fichier ZIP contenant le code source de la fonction que Terraform importera dans un bucket Cloud Storage:
zip -r function-source.zip .
Notez que la racine du fichier ZIP doit être le répertoire racine du code source de votre fonction. Par conséquent, la commande ci-dessus inclut les fichiers dans le répertoire
helloworldHttp
, mais n'inclut pas le répertoire lui-même.
Créer le fichier main.tf
Dans le répertoire
nodejs-docs-samples/functions/
, créez un fichiermain.tf
pour la configuration Terraform:touch main.tf
Copiez cette configuration Terraform dans votre fichier
main.tf
:Modifiez le fichier
main.tf
pour vous assurer qu'il contient les valeurs adéquates pour les éléments suivants. Vous devez modifier ce fichier chaque fois que votre configuration change (par exemple, pour utiliser un environnement d'exécution différent ou déployer une fonction différente):- Environnement d'exécution : dans cet exemple, l'environnement d'exécution est
nodejs16
. - Point d'entrée de la fonction : dans cet exemple, le point d'entrée de la fonction est
helloHttp
. - Chemin d'accès au fichier ZIP : dans cet exemple, si vous avez placé votre fichier
main.tf
dans le répertoirenodejs-docs-samples/functions/
comme décrit ci-dessus, le chemin d'accès est./helloworld/helloworldHttp/function-source.zip
.
- Environnement d'exécution : dans cet exemple, l'environnement d'exécution est
Initialiser Terraform
Dans le répertoire nodejs-docs-samples/functions/
contenant votre fichier main.tf
, exécutez la commande suivante pour ajouter les plug-ins nécessaires et créer le répertoire .terraform
:
terraform init
Appliquer la configuration Terraform
Dans le répertoire nodejs-docs-samples/functions/
contenant votre fichier main.tf
, déployez la fonction en appliquant la configuration. Lorsque vous y êtes invité, saisissez yes
:
terraform apply
Tester la fonction
Une fois le déploiement de la fonction terminé, notez la propriété URI ou recherchez-la à l'aide de la commande suivante :
gcloud functions describe function-v2 --gen2 --region=us-central1 --format="value(serviceConfig.uri)"
Envoyez une requête à cette URL pour afficher le message "Hello World" de votre fonction. Notez que la fonction est déployée en nécessitant une authentification. Par conséquent, vous devez fournir des identifiants dans votre requête:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" YOUR_FUNCTION_URL
Effectuer un nettoyage
Une fois le tutoriel terminé, vous pouvez supprimer tous les éléments que vous avez créés afin d'éviter tous frais supplémentaires.
Terraform vous permet de supprimer toutes les ressources définies dans le fichier de configuration en exécutant la commande terraform destroy
dans le répertoire nodejs-docs-samples/functions/
contenant votre fichier main.tf
:
terraform destroy
Saisissez yes
pour autoriser Terraform à supprimer vos ressources.