【发布时间】:2020-06-23 02:23:45
【问题描述】:
我正在使用 lambda nodejs 将文件上传到 ftp 服务器。
上传文件源代码:
const ftp = require('basic-ftp');
const fs = require('fs');
class FTPClient {
constructor(host = 'localhost', port = 21, username = 'anonymous', password = 'guest', secure = false) {
this.client = new ftp.Client();
this.settings = {
host: host,
port: port,
user: username,
password: password,
secure: secure
};
}
upload(sourcePath, remotePath) {
let self = this;
(async () => {
try {
let access = await self.client.access(self.settings);
let upload = await self.client.upload(fs.createReadStream(sourcePath), remotePath);
} catch(err) {
console.log(err);
}
self.client.close();
})();
}
close() {
this.client.close();
}
}
module.exports = FTPClient;
index.js 文件:
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
const ftp = require('./upload');
const request = require('request');
let doRequest = async (url) => {
return new Promise(function (resolve, reject) {
request(url, function (error, res, body) {
if (!error && res.statusCode == 200) {
resolve(body);
} else {
reject(error);
}
});
});
}
let createFile = async (data) => {
let fileName = 'fileName.csv';
const csvWriter = createCsvWriter({
path: '/tmp/fileName.csv',
header: [
{ id: 'date', title: 'Date' },
{ id: 'mac_address', title: 'MAC_Address' },
{ id: 'enter', title: 'Enter' }
]
});
await csvWriter.writeRecords(data);
const client = new ftp('ftphost', 21, 'ftp_username', 'ftp_password');
await client.upload('/tmp/fileName.csv', fileName);
}
exports.handler = async (event, s3FileStreamContent) => {
let dataExcel = [];
let url = 'http://example.com/apiUrl';//only for example
let res = await doRequest(url);
let data = JSON.parse(res).data;
dataExcel.push({
date: data.date,
mac_address: data.mac,
enter: data.enter
});
createFile(data);
};
运行后的日志:
回复:
空
请求 ID:
“9c8e1701-ad54-42eb-8dc6-bbed77bc9b41”
功能日志:
START RequestId:9c8e1701-ad54-42eb-8dc6-bbed77bc9b41 版本:$LATEST
END 请求 ID:9c8e1701-ad54-42eb-8dc6-bbed77bc9b41
报告请求 ID:9c8e1701-ad54-42eb-8dc6-bbed77bc9b41 持续时间: 517.98 毫秒计费持续时间:600 毫秒内存大小:128 MB 使用的最大内存:93 MB
无法将文件上传到 ftp 服务器。请帮我。谢谢。
【问题讨论】:
-
请分享日志,尤其是。那些有错误的人。还要确定一下:您是在 lambda 上为 FTPClient 构造函数提供不同的参数,还是尝试访问
localhost? -
@michaelbahr 感谢您的回复。我已经更新了问题。
标签: node.js aws-lambda