以编程方式将文件从 S3 存储桶移动到 Windows EC2,反之亦然

Programmatically move files from an S3 bucket to a Windows EC2 and vice-versa

我想将文件推送到 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 连接。

有更好的方法吗?我想要做的就是 upload/download 使用 Node.js 的特定目录(对于 Windows EC2)。

在 EC2 上自动执行 运行 脚本的一个好方法是使用 SSM Run Command. If you set up each EC2 instance correctly, then it becomes a managed instance,您可以在 EC2 实例队列中触发 运行 脚本,由标签选择,例如。