我寫了一些基本的js只列出FTP的文件,但我得到:AWS Lambda可以與S/FTP交互/互動嗎?
是不是因爲拉姆達不能與FTP互動「過程完成請求之前退出」?
我正在使用jsftp btw。
這裏是我的設置:
- 我用Serverless創建項目
- 對於我的拉姆達,我用和的NodeJS我使用JSFTP應對FTP的東西。
我的代碼:
// 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);
});
};
我的FTP拉姆達代碼:
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);
})
});
};
我加了一些的console.log()所有的地方,它看起來像它扼殺一旦它試圖ftp.auth。
輸出我在雲表看到:
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
所以看起來它只是哽咽的地方......
lambda函數執行的默認超時時間爲3秒。您的通話可能需要更長時間並終止。您可以嘗試將其更改爲更大的值 –
您的進程崩潰(在日誌中查找錯誤)或最後沒有調用context.succeed()。 –
@mbaird更新版本使用代碼即時通訊使用 – iCodeLikeImDrunk