node.js - SFTP createReadStream 未写入 s3 存储桶

标签 node.js amazon-s3 ssh aws-lambda sftp

我正在尝试从 sftp 服务器读取文件并将该文件传输到 s3 存储桶中。我无法将文件流式传输到 s3 存储桶中。是的,文件路径完全正确。我不确定我做错了什么。当我运行代码时,它甚至不会尝试将流上传到存储桶中,因为我没有收到任何上传控制台日志。

const aws = require('aws-sdk');
const s3 = new aws.S3();
const Client = require('ssh2').Client;
const conn = new Client();

const connSettings = {
    host: event.serverHost,
    port: event.port,
    username: event.username,
    password: event.password
};

exports.handler = function(event) {
    conn.on('ready', function() {
        conn.sftp(function(err, sftp) {
            if (err) {
                console.log("Errror in connection", err);
                conn.end()
            } else {
                console.log("Connection established");

                let readStream = sftp.createReadStream(remoteFilePath);
                  console.log(`Read Stream ${readStream}`)
                  // readStream outputs [object Object] to the console

                const uploadParams = {
                    Bucket: s3Bucket,
                    Key: 'fileName',
                    Body: readStream
                }

                s3.upload (uploadParams, function (err, data) {
                    if (err) {
                        console.log("Error", err);
                    } if (data) {
                        console.log("Upload Success", data.Location);
                    }
                });

                conn.end()   
            }
        });
    }).connect(connSettings);
}

我希望能够将 readStream 从 sftp 服务器流式传输到 s3 存储桶中。

最佳答案

conn.end() 立即结束连接。将其移至 s3.upload() 回调内部,以便您的数据在连接关闭之前实际传输。

关于node.js - SFTP createReadStream 未写入 s3 存储桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57243462/

相关文章:

python - 主机内的 Fabric ssh 两次

node.js - 如何在 mongodb 中 insertMany 和更新重复项?

node.js - 如何通过映射函数控制串行和并行控制流?

ssh - byobu 在 ssh session 中重命名窗口

hadoop - Apache Spark 在作业开始之前正在做什么

linux - <AWS S3> 如何根据修改日期下载S3 bucket文件?

php - 使用 phpseclib Interactive shell 显示超过 17 行

node.js - 在 Windows cmd 中,“nodemon”未被识别为内部命令错误

unit-testing - 如何为 mocha 指定测试目录?

amazon-web-services - 部署 ElasticBeanstalk 时 AWS 代码管道出错