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



我试图从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);
});

函数运行时不会产生错误,但不会向目标文件写入任何内容。我在这里做错了什么,我怎么调试这个?还有,有没有更好的方法来做这件事呢?

这不是的方式。创建一个S3桶,并为Lambda函数创建合适的Lambda执行角色,以便能够从桶中读取数据。另外,为EC2实例创建一个角色,使其能够写入相同的S3 bucket。从两边使用S3 API (lambda函数和EC2)应该足以共享文件。

考虑这种方法:您将解决方案从VPC和区域的角度解耦。此外,由于lambda只需要访问S3,您节省了ENI(弹性网络接口)资源,因此您不使用VPC私有ip。这些优势对你来说可能并不重要,但了解它们是很好的。

最新更新