以下是一个使用AWS Lambda和Node.js将文件上传到FTP的解决方法。您可以使用npm包basic-ftp
来处理FTP上传。
首先,确保您已经创建了一个AWS Lambda函数,并且已经设置了正确的IAM角色来访问FTP服务器。
接下来,安装basic-ftp
npm包:
npm install basic-ftp
然后,创建一个名为index.js
的文件,并将以下代码添加到文件中:
const ftp = require("basic-ftp");
exports.handler = async (event) => {
// FTP服务器的连接配置
const ftpConfig = {
host: "ftp.example.com",
user: "your-ftp-username",
password: "your-ftp-password",
};
// 要上传的本地文件路径
const localFilePath = "/path/to/local/file.txt";
// 连接到FTP服务器
const client = new ftp.Client();
try {
await client.access(ftpConfig);
// 上传文件
await client.uploadFrom(localFilePath, "remote/file.txt");
return {
statusCode: 200,
body: "文件上传成功",
};
} catch (error) {
console.error("文件上传失败", error);
return {
statusCode: 500,
body: "文件上传失败",
};
} finally {
// 关闭FTP连接
client.close();
}
};
在上面的代码中,您需要将ftpConfig
对象中的host
,user
和password
替换为您自己的FTP服务器的连接配置。将localFilePath
替换为您要上传的本地文件的路径。将"remote/file.txt"
替换为您希望将文件上传到的远程FTP路径。
最后,使用AWS CLI或AWS管理控制台将index.js
文件和node_modules
文件夹打包为一个zip文件,并将其上传到您的AWS Lambda函数。
当您调用此AWS Lambda函数时,它将连接到FTP服务器,并将本地文件上传到指定的远程路径。如果上传成功,它将返回状态码200和消息"文件上传成功"。如果上传失败,它将返回状态码500和消息"文件上传失败"。