使用Elastic Beanstalk部署.NET worker应用程序

时间:2013-10-21 16:46:52

标签: .net amazon-web-services elastic-beanstalk

我正在使用AWS基础架构开发更广泛的Web应用程序。它有两个'worker'组件,它们从SQS读取工作并将结果写入RDS数据库。其中一个是Python,我已经在单个Elastic Beanstalk实例上工作了。第二个使用.NET,我目前正在研究如何部署它。对于生产来说,两者都是弹性的,有多个实例。

由于这些处理组件不是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 worker应用程序执行此操作?

或者它太难了,我应该考虑首先移植到MONO并使用其中一个Linux选项? (MONO运行成本预计会更具成本效益,因此它已经列入未来的待办事项清单)

1 个答案:

答案 0 :(得分:6)

您可以使用.NET容器执行相同的操作。您必须将工作程序安装为Windows服务。查看此blog post,其中详细说明了这一点。在高级别,您将拥有一个包含以下内容的.ebextensions文件:

sources:
  c:/AppSupport/MyAppJanitor: http://s3.amazonaws.com/my-app-support/MyAppJanitor.zip
commands:
  install-janitor:
    command: C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\installutil MyAppJanitor.exe
    cwd: c:/AppSupport/MyAppJanitor
    waitForCompletion:0
services:
  windows:
    MyAppJanitor:
      enabled: true
      ensureRunning: true
      commands: install-janitor