使用SSH在另一个AWS实例来自一个AWS实例上运行长时间运行的python脚本

问题描述

我正在考虑使用this post中详述的策略来使用SSH在另一个AWS实例(来自一个AWS实例)上运行python脚本。但是,此python脚本可能需要几天才能完成,而且我担心SSH连接可能会中断,从而导致脚本在远程实例上停止(如果发生这种情况,这不是世界末日,但这意味着我必须重新启动从头开始编写脚本,因此这种情况不会经常发生)。两个AWS实例之间的SSH连接在几天内断开的可能性有多大?是否有任何简单方法来使这种连接更稳定,同时仍保持SSH提供的控制台转发?

(由于SSM命令的最大超时值为48小时,我无法使用AWS的SSM)

解决方法

SSH旨在提供对交互式Shell的登录。这不是构建机器间通信的好方法。

我建议采用松耦合的方法

  • 实例A将工作请求推送到 Amazon SQS队列
  • 实例B具有等待工作的“工作者”应用程序。它会定期轮询SQS队列以等待工作。收到工作请求后,它将处理该请求。

您还需要确定如果工作人员失败或未完成工作的方法。通常,该消息将超时并重新出现在队列中,以供其他工作人员处理。但是,您的方案可能会简单得多,只有一名工人。

通过SQS发送工作请求的好处是可以将工作排队,等待工人完成上一个任务。另外,如果您希望并行处理作业,则可以产生多个工作程序。

请参阅:Queuing Chain Pattern - AWS-CloudDesignPattern

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...