Outils pour développer des fonctions Lambda

 

Si nous faisons le tour des outils permettant de développer des fonctions Lambda, le choix est plus que restreint. Il existait pour l’instant l’interface du service « Lambda », mais l’ergonomie n’est pas au rendez-vous.

 

Heureusement, AWS a développé un service en place depuis presque un an, Cloud9, qui est l’outil que l’on attendait. Racheté en 2016 à une startup qui a développé ce produit d’IDE en ligne, il permet de développer et tester des fonctions Lambda en : Node.js, Python, Java, C# et Go. L’avantage de cet IDE est qu’il est totalement intégré à la console AWS.
Si nous regardons le mécanisme de Cloud9, nous pourrons être étonnés au premier abord qu’il ne s’exécute pas lui même comme un service masquant son implémentation, mais au contraire qu’il est implémenté sur un serveur de type Linux accessible. Celui-ci peut être soit un serveur on premise et vous choisissez alors « Connect and run in remote server (SSH) ». Mais le plus simple est de l’exécuter sur une instance EC2, par défaut de type t2.micro. Dans ce cas, il est à noter que si vous choisissez une instance d’un type plus véloce pour héberger votre IDE, la facturation de cette instance sera appliquée. Une option astucieuse permet d’arrêter cette instance automatiquement en cas de non utilisation au bout d’un timeout.
Enfin, il est possible de développer à plusieurs sur une même instance.

1) Création de l’EC2 qui supporte Cloud9

La création de l’EC2 supportant le Cloud9 ne pose pas de problème parce que cela se fait de manière automatique. L’option « Cost-settting saving » permet d’arrêter automatiquement l’EC2 pour diminuer les coûts d’exploitation.

 

 

2) Lancement de l’interface de développement Cloud9

Pour lancer l’interface graphique de Cloud9, il faut se rendre dans le service Cloud9 qui liste ceux disponibles. Lancer ensuite l’interface graphique en cliquant sur le bouton « Open IDE » de l’instance que vous voulez utiliser. Le serveur Linux sous-jacent est transparent dans une utilisation normale de Cloud9.

Dans le cas d’un arrêt de l’instance EC2 réalisé par exemple par l’option « Cost-settting saving », l’instance EC2 sera relancée par ce même bouton « Open IDE ».

Juste une remarque : j’utilise le bloqueur de publicité Ghostery avec Firefox. Il faut désactiver Ghostery sinon  l’interface graphique Cloud9 ne peut pas se lancer.

 

 

3) Utilisation de l’interface graphique

Une fois l’interface graphique ouverte, elle se présente comme dans l’image ci-dessous.

Le principe est le suivant : les fonctions Lambda déjà existantes dans votre environnement Cloud se situent dans la partie « Remote Functions ». Pour pouvoir travailler sur une fonction, il faut « l’importer ».

 

 

Une fois importée, la fonction apparait dans la partie « Local Functions », et est accessible dans l’interface de développement. Il est alors possible de la modifier, de l’exécuter avec la commande « Run », de la déboguer, …

La création de nouvelles fonctions Lambda s’effectue aussi à travers cette interface.

 

Une fois la fonction modifiée et testée, il faut la réimporter dans l’environnement Cloud avec la commande « Deploy ».

 

Conclusion

Quels autres outils existent pour développer des fonctions Lambda ?

Si nous prenons le cas d’Eclipse, Eclipse permet de développer des fonctions Lambda en java, mais « l’AWS toolkit for Eclipse » ne permet pas d’ouvrir les fonctions développées en Python. Il permet cependant de visualiser les logs de chaque lancement des fonctions Python.

Les outils disponibles sont donc très restreints, mais ceux existants rendent à leur niveau le service qu’on leur demande. Je citerai parmi ceux-ci Pycharm, qui est le plus abouti pour développer des Lambda en Python.

Pycharm demande quelques mises au point pour pouvoir fonctionner sur Windows, ce que je détaillerai dans un prochain article.
Il permet, à l’aide de la librairie « python-lambda-local » fournie par AWS, de travailler sur du code Lambda local que l’on soumet au moteur Lambda sur AWS.
Cependant, cet outil ne permet pas d’importer ou exporter les fonctions Lambda directement depuis AWS.