Derzeit ist JavaScript / Node.js die einzige Sprache, die in AWS Lambda als Lambda-Funktion verwendet werden kann. Aber einige Leute möchten in Python schreiben, deshalb habe ich versucht, das in Python geschriebene Skript auszuführen.
Aber es ist nicht schwer. Wir wissen, dass ein Skript, das als Lambda-Funktion ausgeführt wird, externe Befehle ausführen kann. In einer früheren Umfrage haben wir auch festgestellt, dass es in der Umgebung eine Python-Laufzeit gibt (siehe die Ergebnisse in Aufdecken von AWS Lambda).
Sie müssen also lediglich ein in Python geschriebenes Skript mit JavaScript in der Lambda-Funktion generieren und es mit child_process () als externen Befehl aufrufen.
Lass es uns jetzt machen.
Anstatt ein Skript in der Lambda-Funktion zu generieren, wird dieses Mal das zuvor vorbereitete Skript in S3 gespeichert und durch HTTP-Zugriff in der Umgebung der Lambda-Funktion erfasst und ausgeführt. Darüber hinaus wird beim Abrufen einer Datei über HTTP curl verwendet, da aus irgendeinem Grund in der Umgebung der Lambda-Funktion kein wget vorhanden ist.
Bereiten Sie zunächst das Python-Skript vor, das Sie ausführen möchten. Diesmal habe ich es versucht und es so aussehen lassen.
test.py
#! /usr/bin/python
print "Hello, Wordl!"
Geben Sie dies an S3 weiter und veröffentlichen Sie es, um den HTTP-Zugriff zu aktivieren.
Als nächstes folgt der Code der tatsächlich registrierten Lambda-Funktion.
index.js
exports.handler = function(event, context) {
var exec = require('child_process').exec;
var cmd = "curl -s https://s3-ap-northeast-1.amazonaws.com/<Eimername>/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');
}
});
};
Ja, wie Sie vielleicht bemerkt haben, ist das vorherige Skript dasselbe. Ich ändere nur den externen Befehl, der ausgeführt werden soll. Die Befehle, die tatsächlich ausgeführt werden, führen einfach die folgenden Schritte in der angegebenen Reihenfolge aus.
Rufen wir nun die Lambda-Funktion auf.
2014-11-26T11:51:47.683Z a0862c9f-7562-11e4-8f05-ebd8b45899f3 standard out: Hello, Wordl!
Oh, es wurde richtig ausgeführt und "Hallo Welt!" Wurde ausgegeben!
Unabhängig davon, ob es tatsächlich nützlich ist oder nicht, habe ich ein in Python geschriebenes Skript mit der Lambda-Funktion ausgeführt.
** Haftungsausschluss Dies ist eine individuelle Meinung, unabhängig von der Firma oder Organisation, zu der sie gehört. ** ** **