Premiers pas avec Cloud Functions

1. Présentation

Cloud-Functions.png

Avec Cloud Functions, vous pouvez écrire des fonctions simples à application unique associées à des événements émis par votre infrastructure et vos services cloud. Votre fonction Cloud est déclenchée quand un événement surveillé est lancé. Votre code s'exécute dans un environnement entièrement géré. Vous n'avez pas à vous préoccuper du provisionnement de vos infrastructures ni de la gestion des serveurs.

Actuellement, les fonctions Cloud peuvent être écrites en JavaScript, Python ou Go. Dans le cas de JavaScript, elles s'exécutent dans un environnement Node.js sur Google Cloud Platform. Vous pouvez utiliser et exécuter votre fonction Cloud dans n'importe quel environnement Node.js standard, ce qui facilite la portabilité et les tests en local.

Connecter et étendre des services cloud

Cloud Functions fournit une couche conjonctive de logique qui vous permet d'écrire du code pour connecter et étendre des services cloud. Écoutez des événements, tels qu'une importation de fichier sur Cloud Storage, une modification apportée à un journal ou un message entrant sur un sujet Cloud Pub/Sub, et répondez-y. Cloud Functions étend les services cloud existants et vous permet de gérer de nombreux cas d'utilisation avec une logique de programmation arbitraire. Les fonctions Cloud ont accès aux identifiants du compte de service Google et peuvent ainsi être facilement authentifiées sur la majorité des services Google Cloud Platform, tels que Datastore, Cloud Spanner, l'API Cloud Translation, l'API Cloud Vision et bien d'autres encore.

907ffb96feada611.png

Événements et déclencheurs

Les événements cloud sont des choses qui se produisent dans votre environnement cloud.Il peut s'agir de modifications apportées aux données d'une base de données, de l'ajout de fichiers à un système de stockage ou de la création d'une instance de machine virtuelle.

Des événements se produisent, que vous choisissiez d'y répondre ou non. Vous créez une réponse à un événement avec un déclencheur. Un déclencheur vous permet d'indiquer que vous souhaitez surveiller un ou plusieurs événements. En associant une fonction à un déclencheur, vous pouvez détecter des événements et agir en conséquence. Pour en savoir plus sur la création de déclencheurs et leur association à des fonctions, consultez Événements et déclencheurs.

Solutions sans serveur

Grâce à Cloud Functions, vous n'avez plus besoin de gérer des serveurs, de configurer des logiciels, de mettre à jour des frameworks ni d'appliquer des correctifs aux systèmes d'exploitation. Comme le logiciel et l'infrastructure sont entièrement gérés par Google, il vous suffit d'ajouter du code. De plus, les ressources sont automatiquement provisionnées en réponse aux événements. Cela signifie qu'une fonction peut passer de quelques appels par jour à plusieurs millions, sans aucune intervention de votre part.

Cas d'utilisation

Les charges de travail asynchrones, telles que les opérations ETL légères, et les automatisations cloud, comme le déclenchement de versions d'application, ne nécessitent plus leur propre serveur ni de développeur pour fonctionner. Il vous suffit de déployer une fonction Cloud associée à l'événement de votre choix, et vous avez terminé.

En raison de son exécution précise et à la demande, Cloud Functions est également idéal pour les API légères et les webhooks. En outre, grâce au provisionnement automatique de points de terminaison HTTP lors du déploiement d'une fonction HTTP, aucune configuration compliquée n'est requise, comme c'est le cas avec certains autres services.

Dans cet atelier, vous allez découvrir comment créer, déployer et tester une fonction Cloud dans la console Google Cloud. Vous allez :

  • Créer une fonction Cloud
  • Déployer et tester la fonction
  • Afficher les journaux

2. Préparation

Configuration de l'environnement d'auto-formation

  1. Connectez-vous à Cloud Console, puis créez un projet ou réutilisez un projet existant. (Si vous n'avez pas encore de compte Gmail ou G Suite, vous devez en créer un.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Mémorisez l'ID du projet. Il s'agit d'un nom unique permettant de différencier chaque projet Google Cloud (le nom ci-dessus est déjà pris ; vous devez en trouver un autre). Il sera désigné par le nom PROJECT_ID tout au long de cet atelier de programmation.

  1. Vous devez ensuite activer la facturation dans Cloud Console pour pouvoir utiliser les ressources Google Cloud.

L'exécution de cet atelier de programmation est très peu coûteuse, voire gratuite. Veillez à suivre les instructions de la section "Nettoyer" qui indique comment désactiver les ressources afin d'éviter les frais une fois ce tutoriel terminé. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300 $.

Google Cloud Shell

Google Cloud et Cloud Functions peuvent être utilisés à distance depuis votre ordinateur portable. Toutefois, dans cet atelier de programmation, nous allons utiliser Google Cloud Shell, un environnement de ligne de commande exécuté dans le cloud.

Cette machine virtuelle basée sur Debian contient tous les outils de développement dont vous aurez besoin. Elle intègre un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Cela signifie que tout ce dont vous avez besoin pour cet atelier de programmation est un navigateur (oui, tout fonctionne sur un Chromebook).

  1. Pour activer Cloud Shell à partir de Cloud Console, cliquez simplement sur Activer Cloud Shell fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (l'opération de provisionnement et la connexion à l'environnement ne devraient prendre que quelques minutes).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Capture d'écran du 2017-06-14 à 10.13.43 PM.png

Une fois connecté à Cloud Shell, vous êtes normalement déjà authentifié et le projet PROJECT_ID est sélectionné :

gcloud auth list

Résultat de la commande

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

Résultat de la commande

[core]
project = <PROJECT_ID>

Si, pour une raison quelconque, le projet n'est pas défini, exécutez simplement la commande suivante :

gcloud config set project <PROJECT_ID>

Vous recherchez votre PROJECT_ID ? Vérifiez l'ID que vous avez utilisé pendant les étapes de configuration ou recherchez-le dans le tableau de bord Cloud Console :

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

Par défaut, Cloud Shell définit certaines variables d'environnement qui pourront s'avérer utiles pour exécuter certaines commandes dans le futur.

echo $GOOGLE_CLOUD_PROJECT

Résultat de la commande

<PROJECT_ID>
  1. Pour finir, définissez la configuration du projet et de la zone par défaut :
gcloud config set compute/zone us-central1-f

Vous pouvez choisir parmi différentes zones. Pour en savoir plus, consultez la page Régions et zones.

3. Créer une fonction

Lors de cette étape, vous allez créer une fonction Cloud avec la console.

  • Dans la console, cliquez sur le menu de navigation > Cloud Functions.

fe64222954f5f372.png

  • Cliquez sur CRÉER UNE FONCTION. :

7adca9640ca2e5a6.png

  • Nommez votre fonction GCFunction et conservez les autres valeurs par défaut : allocation de mémoire, HTTP comme déclencheur, éditeur intégré, environnement d'exécution par défaut et exemple de code par défaut.

795f1fedc0f039bb.png

  • Dans la section « Créer une fonction » en bas de la boîte de dialogue, cliquez sur "Créer" pour déployer la fonction:

b68c3647b771e6f9.png

Après avoir cliqué sur "Créer", vous êtes redirigé vers la page de présentation de Cloud Functions dans la console.

Pendant le déploiement de la fonction, une icône de chargement s'affiche à côté. Une fois la fonction déployée, l'icône est remplacée par une coche verte. En cas de problème, une icône rouge et un lien vers les journaux s'affichent pour vous aider à comprendre le problème (probablement un problème dans votre code).

3ec684b1b4906657.png

Et voilà ! Votre fonction est maintenant active et prête à être déclenchée via HTTP.

4. Tester la fonction

Sur la page de présentation de Cloud Functions, affichez le menu correspondant à votre fonction, puis cliquez sur Tester la fonction :

74e310ee6663bb3c.png

Dans le champ "Événement déclencheur", saisissez le texte suivant entre des accolades {}, puis cliquez sur Tester la fonction.

Dans le champ Résultat, le message "Success" (Opération réussie) doit s'afficher: Hello World!.

Dans le champ Journaux, le code d'état 200 indique que la fonction a bien été exécutée. Notez que l'affichage des journaux peut prendre une minute.

a876def9cbf24a45.png

5. Afficher les journaux de la fonction

Cliquez sur la flèche bleue pour revenir à la page de présentation de Cloud Functions :

8917a2bfa4fb9502.png

Affichez le menu de votre fonction et cliquez sur View logs (Afficher les journaux) :

e97e6ec1fc17dfd7.png

Voici un exemple d'historique du journal :

d91a00cf4457fa84.png

Notez que vous pouvez filtrer les journaux par fonction et par gravité, et effectuer une recherche à l'aide d'une étiquette ou d'un texte libre.

Votre application a été déployée et testée, et vous avez pu consulter les journaux.

6. Nettoyer des ressources

Vous n'avez pas vraiment besoin de nettoyer les ressources, car il s'agit de l'informatique sans serveur : le scaling à zéro signifie également le scaling à zéro instance. Ainsi, si votre fonction n'enregistre aucun trafic, aucuns frais ne vous sont facturés. De plus, les deux premiers millions d'appels de fonction Cloud chaque mois sont sans frais. Consultez la page des tarifs pour en savoir plus.

Si vous souhaitez supprimer la fonction, accédez simplement à la page de présentation, sélectionnez la fonction et cliquez sur SUPPRIMER :

4fe11e1b41b32ba2.png

7. Étape suivante

Cloud Functions vous réserve bien d'autres surprises ! Découvrez les autres ateliers de programmation, ainsi que la page du produit et sa documentation.

Nous vous invitons également à consulter les ressources suivantes :