我正在尝试从 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/