Outils pour développer des fonctions Lambda (2)

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 !!!