Pour le moment, JavaScript / Node.js est le seul langage qui peut être utilisé comme fonction Lambda dans AWS Lambda. Mais il y a des gens qui veulent écrire en Python, alors j'ai exécuté un script écrit en Python.
Mais ce n'est pas difficile. Nous savons qu'un script qui s'exécute en tant que fonction Lambda peut exécuter des commandes externes. Nous avons également constaté dans une enquête précédente qu'il existe un runtime python dans l'environnement (voir les résultats de ls dans Uncovering AWS Lambda).
Il vous suffit donc de générer un script écrit en Python en utilisant JavaScript dans la fonction Lambda et de l'appeler en tant que commande externe en utilisant child_process ().
Faisons-le maintenant.
Cette fois, au lieu de générer un script dans la fonction Lambda, le script préparé à l'avance est enregistré dans S3, et il est acquis par un accès HTTP dans l'environnement de la fonction Lambda et exécuté. De plus, lors de l'extraction d'un fichier par HTTP, curl est utilisé car il n'y a pas de wget dans l'environnement de la fonction Lambda pour une raison quelconque.
Tout d'abord, préparez le script Python que vous souhaitez exécuter. Cette fois, je l'ai essayé et je l'ai fait ressembler à ça.
test.py
#! /usr/bin/python
print "Hello, Wordl!"
Donnez-le à S3 et rendez-le public pour activer l'accès HTTP.
Vient ensuite le code de la fonction Lambda qui est réellement enregistrée.
index.js
exports.handler = function(event, context) {
var exec = require('child_process').exec;
var cmd = "curl -s https://s3-ap-northeast-1.amazonaws.com/<nom du bucket>/test.py > /tmp/test.py;chmod 755 /tmp/test.py;/tmp/test.py"
var child = exec(cmd, function(error, stdout, stderr) {
if (!error) {
console.log('standard out: ' + stdout);
console.log('standard error: ' + stderr);
context.done();
} else {
console.log("error code: " + error.code + ", err: " + error);
context.done(error,'lambda');
}
});
};
Oui, comme vous l'avez peut-être remarqué, le script précédent est le même. Je change juste la commande externe pour l'exécuter. Les commandes qui sont réellement exécutées exécutent simplement ce qui suit dans l'ordre.
Invoquons maintenant la fonction Lambda.
2014-11-26T11:51:47.683Z a0862c9f-7562-11e4-8f05-ebd8b45899f3 standard out: Hello, Wordl!
Oh, il a été exécuté correctement et "Hello, World!" Était sorti!
Donc, que cela soit réellement utile ou non, j'ai exécuté un script écrit en Python avec la fonction Lambda.
** Avertissement Il s'agit d'une opinion individuelle, quelle que soit l'entreprise ou l'organisation à laquelle elle appartient. ** **
Recommended Posts