【问题标题】:Deploying a .NET worker app with Elastic Beanstalk使用 Elastic Beanstalk 部署 .NET 辅助应用程序
【发布时间】:2013-10-22 07:33:04
【问题描述】:

我正在使用 AWS 基础设施开发更广泛的 Web 应用程序。它有两个“工作”组件,它们从 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 辅助应用程序执行此操作?

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

【问题讨论】:

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


    【解决方案1】:

    您可以对 .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
    

    【讨论】:

    • 谢谢 - 是的,博客文章(和第 2 部分)很有用。我不是唯一一个发现 AWS 文档很差的人 - 至少亚马逊似乎在他们的博客中认识到这一点 - 遗憾的是,谷歌在索引它们方面做得不好!去研究 Windows 服务的编写(应该不需要太多更改),一旦我全力以赴,我会在本周晚些时候报告......
    • 我将此标记为答案。我已将我的项目更改为服务(并且在我的 PC 上本地运行良好)。我也将它部署到 EB。我的上传文件只是一个带有 .ebextensions 配置信息的 zip。实际的服务 exe、配置、DLL 和数据文件在 S3 托管的 zip 中传递。但是,我目前在主处理线程开始时遇到“FileNotFound”异常。至少服务开始了,而且已经到了这么远!虽然我正在碰壁,但我认为新问题更合适。
    猜你喜欢
    • 2013-01-20
    • 2017-05-11
    • 2020-05-20
    • 2019-03-08
    • 2021-04-28
    • 2016-11-20
    • 2015-09-21
    • 2020-09-02
    • 2012-06-23
    相关资源
    最近更新 更多