使用 SSH 客户端将文件下载到 AWS Lambda

Download file to AWS Lambda using SSH client

我正在尝试从 EC2 实例下载文件并将其临时存储在 AWS Lambda 内的 tmp 文件夹中。这是我试过的:

let Client  = require('ssh2-sftp-client');
let sftp = new Client();
sftp.connect({
    host: host,
    username: user,
    privateKey : fs.readFileSync(pemfile)
}).then(() => {
    return sftp.get('/config/test.txt' , fs.createWriteStream('/tmp/test.txt'))
}).then(() => {
    sftp.end();
}).catch(err => {
    console.error(err.message);
});

该函数运行时未产生错误,但未将任何内容写入目标文件。我在这里做错了什么,我该如何调试呢?还有更好的方法吗?

这不是 cloud IMO 的方法。创建一个 S3 存储桶,并为 lambda 函数创建适当的 Lambda 执行角色,以便能够从该存储桶中读取数据。此外,为 EC2 实例创建一个角色,以便能够写入同一个 S3 存储桶。从双方使用 S3 API,lambda 函数和 EC2,应该足以共享文件。

考虑这种方法:从 VPC 和区域的角度解耦您的解决方案。另外,由于 lambda 只需要访问 S3,你节省了 ENI(弹性网络接口)资源,所以你没有使用你的 VPC 私有 ips。这些只是您的情况可能不关心的优点,但了解它们是很好的。