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 上自动运行脚本的一种好方法是使用SSM Run Command。如果您正确设置了每个 EC2 实例,那么它就会成为一个托管实例,并且您可以触发跨 EC2 实例队列运行脚本,例如,由标签选择。

于 2020-05-03T14:10:44.403 回答