AWS Lambda prend désormais en charge Python 2.7 à partir du 8 octobre 2015, après Node.js et Java. Cela permet à Lambda d'utiliser du code Python précédemment écrit à l'aide de boto. Je l'ai essayé immédiatement, je vais donc résumer les points.
Name Un nom géré par Lambda. Ce n'est pas le nom du module Python qui s'exécute sur Lambda.
Code En Python, un fichier est un module. Le nom du fichier est * nom du module.py *. Si vous avez un module, modifiez-le en ligne, et si vous avez plusieurs modules, téléchargez-les ensemble dans un zip. Lors du téléchargement, téléchargez à partir du navigateur dans la console de gestion ou spécifiez le fichier téléchargé sur S3.
Si vous avez plusieurs modules, fermez-les ensemble. Il y a deux points importants.
--Compressez pour que le module soit en haut du zip. --Bon exemple: les fichiers sont extraits dans le répertoire actuel lorsqu'ils sont décompressés sans options
pip install
, incluez ses dépendances dans le zip.
--boto 3 n'a pas besoin d'être inclus dans le zip. Si vous souhaitez utiliser une version spécifique de boto, incluez-la dans le zip.Cd
dans le répertoire de niveau supérieur contenant votre code Python et zip -r filename.zip *
. Voici un exemple lorsque le code est sous le répertoire * myModuleDir *.
Il n'y a pas de règles pour les noms de fichiers zip.
bash
$ cd myModuleDir
$ ls
myCode1.py
myCode2.py
...
$ zip -r ~/myLambdaFunction.zip *
Utilisez pip install <modulename> -t <myModuleDir>
pour l'installer dans le répertoire de niveau supérieur contenant le code Python.
Si vous spécifiez la destination de l'installation avec l'option -t
dans pip install
, une erreur peut se produire. Selon mes recherches, il semble que cela se produise lorsqu'il est installé dans lib64 et qu'il est également soulevé dans le problème, mais à partir d'octobre 2015, si vous yum installez python27-pip
sur Amazon Linux, il y a ce problème. Lxml est celui que j'ai essayé. Dans ce cas, cela fonctionnait en copiant simplement le module installé sans l'option -t
.
J'ai eu une erreur lorsque j'ai copié le module Python2.6, donc pip installez avec Python2.7.
$ cp -R /usr/local/lib64/python2.7/site-packages/lxml <myModuleDir>
Blueprint Il s'agit d'un modèle qui peut être facilement démarré pour chaque service AWS ou langage de programmation utilisé à partir de Lambda. Par exemple, vous pouvez facilement démarrer avec Lambda en Python en sélectionnant * hello-world-python *.
Handler Si vous sélectionnez Blueprint, le gestionnaire écrit dans le code est sélectionné. Si vous souhaitez réutiliser un module Python existant, remplacez ʻif name == '__ main __': `par'def lambda_handler (événement, contexte): 'et spécifiez ce gestionnaire dans Lambda. Ou si vous ne souhaitez pas modifier un module existant, importez le module existant et créez un module wrapper qui décrit le gestionnaire.
Role Attribuez un rôle à l'instance Lambda que vous souhaitez exécuter. Commencez avec un modèle que vous pouvez créer et sélectionner dans AWS Management Console et modifier les autorisations si nécessaire. Si le rôle est correctement défini, vous n'avez pas besoin de définir les informations d'identification de sécurité (clé d'accès).
Memory Vous pouvez sélectionner de 128 Mo à 1536 Mo par étapes. Une fois exécuté, la consommation maximale de mémoire sera affichée sur la console.
Timeout Il peut être réglé en quelques secondes. Avec cette mise à jour, vous pouvez configurer jusqu'à 5 minutes. Si le délai d'expiration est dépassé, le programme sera interrompu de force.
Log Il est également affiché sur la console, mais il est automatiquement enregistré dans le journal CloudWatch.
Appendix A. References
Recommended Posts