【问题标题】:Download file to AWS Lambda using SSH client使用 SSH 客户端将文件下载到 AWS Lambda
【发布时间】:2021-10-13 00:00:20
【问题描述】:

我正在尝试从 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);
});

函数运行没有产生错误,但没有写入目标文件。我在这里做错了什么,我该如何调试?还有更好的方法可以做到这一点吗?

【问题讨论】:

  • 在 AWS Lambda 函数中使用 SSH 并不是一项非常“类似于云”的活动。您是否考虑过替代方法,例如将文件存储在 S3 中的 EC2 实例,然后 Lambda 函数可以访问这些方法?

标签: node.js amazon-web-services aws-lambda ssh2-sftp


【解决方案1】:

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

考虑这种方法:从 VPC 和区域的角度解耦您的解决方案。此外,由于 lambda 只需要访问 S3,因此您保存了一个 ENI(弹性网络接口)资源,因此您没有使用您的 VPC 私有 ip。这些只是您可能不关心的优点,但最好了解它们。

【讨论】:

    猜你喜欢
    • 2016-02-02
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多