ファイルを Windows EC2 にプッシュし、EC2 からフォルダーを取得して S3 に保存したいと考えています。私は多くの EC2 を持っているので、これを自動化したいと考えていました。現在、ECS 上にssh2-sftp-clientライブラリを使用する Node.js サーバーがあります。次のコードを使用すると、ファイルをプッシュできます (同様に、そこからファイルを抽出して S3 にアップロードできます)。
var Client = require('ssh2-sftp-client');
var sftp = new Client(newClientID);
sftp.connect({
host: host,
username: 'username',
password: 'password',
port: '22',
tryKeyboard: true
}).then(async () => {
try {
if (file.filename && file.file) {
await sftp.put(file.file, `C:/Users/user/Desktop/${file.filename}`);
console.log(`Successfully pushed ${file.filename}`);
}
sftp.on('error', error => {
console.log(error);
sftp.end();
});
resolve();
} catch (ex) {
console.log("SFTP EXCEPTION PUSHING FILES TO INSTANCE", ex);
} finally {
sftp.end();
}
}
しかし、これは堅牢なソリューションではありません。5 人または 6 人のユーザーが同時にプッシュしようとしている場合でも、アクティブな SSH 接続が多すぎるためにサーバー エラーが発生します。
これを行うより良い方法はありますか?私がやりたいのは、Node.js (Windows EC2 用) を使用して特定のディレクトリをアップロード/ダウンロードすることだけです。