我正在使用AWS基础架构开发更广泛的Web应用程序。它有两个“工人”组件,它们从SQS读取工作并将结果写入RDS数据库。其中之一是Python,我已经在单个Elastic Beanstalk实例上工作。第二个使用.NET,我目前正在研究如何部署它。对于生产而言,两者都将具有多个实例的弹性。使用Elastic Beanstalk部署.NET worker应用程序
由于这些处理组件不是Web应用程序(即它们不响应http请求),我必须明确地启动它们。对于Python示例,我使用.ebextensions文件:
container_commands:
02-start-command:
command: "nohup python scannerapp.py > foo.out 2> foo.err < /dev/null &"
leader_only: false
我该如何对.NET应用程序执行相同的操作? 与上面的Python/Linux例子一样,Windows配置文件支持'命令'和'容器命令',但是它们是为启动程序(例如安装程序)设计的。 IE浏览器。直到命令退出,启动/安装才会完成。 nohup命令解决了Python的问题。我如何用.NET工作应用程序来做到这一点?或者是太难了,我应该考虑首先移植到MONO并使用其中一个Linux选项? (MONO的运行成本预计会更具成本效益,因此它已经在未来的待办事项列表中)
谢谢 - 是的博客文章(和第2部分)是有用的。我不是唯一一个发现AWS文档很差的人 - 至少亚马逊似乎在他们的博客中认识到 - 令人遗憾的是,Google并没有把索引编制好!关于研究Windows服务的编写(不应该需要很多更改),并且一旦我完成了一切,我将在本周晚些时候回复... – winwaed
我将此标记为答案。我已经将我的项目更改为一项服务(并且可以在本地PC上正常运行)。我也将它部署到EB。我的上传文件只是.ebextensions配置信息的zip文件。实际的服务exe,config,dll和数据文件都以S3托管的zip形式传递。不过,我目前正在主处理线程的开始处发现“FileNotFound”异常。至少该服务已经开始,并且正在变得如此遥远!虽然我正在打砖墙,但我认为新问题更合适。 – winwaed