1

ファイルを 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 用) を使用して特定のディレクトリをアップロード/ダウンロードすることだけです。

4

1 に答える 1

1

EC2 でのスクリプトの実行を自動化する良い方法の 1 つは、SSM Run Commandを使用することです。各 EC2 インスタンスを正しくセットアップすると、それがマネージド インスタンスになり、たとえばタグによって選択された EC2 インスタンスのフリート全体でスクリプトの実行をトリガーできます。

于 2020-05-03T14:10:44.403 に答える