Ich schrieb einige grundlegende js nur die Dateien eines FTP-Liste, aber ich erhalte:Kann AWS Lambda mit S/FTP kommunizieren?
„Prozess beendet, bevor Anforderung abgeschlossen“
Ist das, weil Lambda nicht mit FTP in Wechselwirkung treten können?
Ich benutze jsftp BTW.
Hier ist mein Setup:
- ich Serverless verwende das Projekt
- Für mein Lambda zu schaffen, habe ich NodeJS und ich bin mit JSFTP mit den ftp Sachen beschäftigen.
Mein Code:
// Require Serverless ENV vars
var ServerlessHelpers = require('serverless-helpers-js').loadEnv();
// Require Logic
var lib = require('../lib');
// Lambda Handler
module.exports.handler = function (event, context) {
lib.respond(event, function (error, response) {
return context.done(error, response);
});
};
Mein ftp Lambda-Code:
var JSFtp = require("jsftp");
module.exports.respond = function (event, cb) {
var ftp = new JSFtp({
host: "host",
user: "user",
password: "password"
});
ftp.auth(ftp.user, ftp.password, function(err, res) {
if (err) console.log(err);
else console.log(res);
ftp.ls(".", function (err, res) {
var results = [];
res.forEach(function (file) {
results.push(file.name);
});
ftp.raw.quit();
return cb(null, results.length);
})
});
};
ich einige console.log hinzugefügt() alle über den Ort und es scheint, wie es einmal würgte es versucht, ftp.auth.
Der Ausgang I in Cloud-Uhr sehen:
START RequestId: __ID__ Version: $LATEST
END RequestId: __ID__
REPORT RequestId: __ID__ Duration: 526.46 ms Billed Duration: 600 ms Memory Size: 1024 MB Max Memory Used: 33 MB
Process exited before completing request
So sieht es aus wie es gerade irgendwo erstickt ...
Das Standard-Timeout für die Ausführung einer Lambda-Funktion beträgt 3 Sekunden. Ihr Anruf könnte länger dauern und beendet werden. Sie können versuchen, es zu einem größeren Wert zu ändern –
Entweder Ihr Prozess stürzt ab (suchen Sie nach Fehlern im Protokoll) oder Sie rufen context.succeed() am Ende nicht auf. –
@mbaird aktualisiert op mit dem code im mit – iCodeLikeImDrunk