Dans un précédent article concernant le développement des fonctions Lambda (cf. Outils pour développer des fonctions Lambda), j’avais parlé d’une suite qui concernerait l’installation de Pycharm sous Windows. Comme je suis gascon et pour faire mentir le fameux dicton « promesse de gascon », voici donc la suite de l’article précédent.
Pycharm 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. Une fois développé, le code python sera copié dans AWS.
Pré-requis avant installation et paramétrage du produit
1) Installation de aws cli
aws cli doit être installé sur le PC Windows. Le répertoire .aws sera utilisé par la suite par Pycharm pour se connecter à votre account AWS.
2) Installation d’une version Python
Télécharger une version de Python correspond à la version de développement de Lambda désirée. Les versions 2.7 et 3.6 de Python sont supportées.
Cf. https://www.python.org/downloads/windows/
Installation du produit
1) Installer Pycharm
Disponible sur le site suivant : https://www.jetbrains.com/pycharm/download
Installer la librairie suivante en ligne de commandes, qui permet d’exécuter localement des fonctions Lambda écrites en Python.
c:\>pip install python-lambda-local
2) Point clé de l’installation sur Windows
Il y a une erreur sur l’interprétation de la fonction système signal() qui n’existe pas dans Windows. L’astuce de l’installation sur Windows consiste à mettre en commentaire ou supprimer la ligne « with time_limit » dans le fichier C:\Users\xxxxx\AppData\Local\Programs\Python\Python36\Lib\site-packages\lambda_local\main.py
Création d’une fonction Lambda de test
1) Création d’un nouveau projet
Une fois l’application Pycharm lancée, choisir dans le menu : File–>New Project.
Je crée un nouveau projet qui porte le nom « test_start_stop »
2) Création d’une fonction Lambda
Dans le projet, je crée un fichier start_instance.py.
Le fichier sera reconnu comme fichier Python.
En se positionnant dans le projet créé, choisir dans le menu : New –> File
Après la création du fichier, je copie le code ci-dessous dans l’interface graphique de la fonction.
Il s’agit d’une fonction sans grande ambition qui se chargera de démarrer une instance à partir de son id.
Voici le code de cette fonction.
import boto3 region = 'us-west-2' def handler(event, context): InstanceId = event['param'] print("instance id ="+InstanceId) ec2 = boto3.client('ec2', region_name=region) ec2.start_instances(InstanceIds=[InstanceId]) print("Stopped instance: " + str(InstanceId))
3) Création d’un fichier de paramétrage
Dans le projet, je crée un fichier de paramétrage, event.json, qui contient un paramètre donnant l’id de l’instance ec2 à démarrer.
Ce paramètre est utilisé dans le code ci-dessus.
{ "param": "i-00547063c12a04ea0" }
4) Création d’un fichier .bat d’exécution
Dans le projet, je crée un fichier, test.bat, qui permettra d’exécuter la fonction lambda sous Windows.
Ce fichier contient :
echo "Testing lambda" python-lambda-local -f %1 %2 %3
5) Situation des fichiers créés
Le projet contient maintenant les fichiers suivants :
Mise en place de l’environnement d’exécution
1) Création d’un paramétrage de run
Dans le menu Run, choisir Edit Configurations :
Choisir Bash dans le menu, et configurer un script de lancement en désignant l’arborescence du path qui mène aux fichiers du projet :
2) Ce script de lancement est celui qui apparait maintenant dans le menu « Run » et que vous pouvez lancer pour démarrer votre instance !!!