Я пытаюсь использовать ssh2-sftp-client
в NodeJS для отправки файла из корзины S3 в AWS на мой сервер. Я видел много примеров, и я пробовал их все безуспешно. Я чувствую, что это близко, но все еще не работает для меня:
async function sendFileViaSftp(srcEvent){
let Client = require('ssh2-sftp-client');
let Path = '/';
let sftp = new Client();
await sftp.connect({
host: '73.XXX.XX.XXX',
port: 22,
username: 'username',
password: 'mypassword'
}).then(() => {
console.log("Connected...");
return sftp.list(Path);
}).then((list) => {
console.log("It worked");
console.log("file to transfer: " + srcEvent.file);
var fs = require('fs');
var path = require('path');
var params = {
Bucket: srcEvent.bucket,
Key: srcEvent.key
};
var tempFileName = path.join('/tmp/', srcEvent.file);
var tempFile = fs.createWriteStream(tempFileName);
s3.getObject(params).createReadStream().pipe(tempFile);
console.log("file is in tmp");
let data = fs.createReadStream(tempFileName);
let remote = '/';
sftp.put(data, remote);
console.log("the code makes it to here and prints this");
return list;
}).catch((err) => {
console.log('Catch Error: ', err);
throw new Error(err);
});
}
Я вызываю эту функцию следующим образом:
if (folder === 'something') {
await sendFileViaSftp(srcEvent);
return {
statusCode: 200,
body: srcEvent
};
}
Я не получаю никаких сообщений об ошибках, похоже, что время истекло, чего я не понимаю, потому что я использую async/await. В моем примере я пытаюсь извлечь файл из корзины S3 и сохранить его в /tmp/
, а затем отправить /tmp/test.xls
. srcEvent.file is test.xls in this case
.
Даже если я могу просто отправить пустой текстовый файл на свой сервер из этой функции, это было бы полезно. Спасибо!