【问题标题】:Scheduled long running c# jobs in aws在 aws 中计划长时间运行的 c# 作业
【发布时间】:2018-01-05 00:05:58
【问题描述】:

我有一个旧的 .net 标准 Windows 服务,它使用 IScheduler 在一天中的特定时间执行各种长时间运行的作业。我会将代码迁移到 .net 核心。我想摆脱 Windows 服务并在无服务器或以某种方式在 aws linux ec2 中运行这些服务,例如使用 docker 或其他东西。我正在考虑 lambda,但它有 5 分钟的硬超时,我想避免重新构建 .net 代码,以便它在更短的时间内或分批运行。我在 aws 中有哪些选项可以将我的 c# windows 服务迁移到非 windows c# 解决方案?

【问题讨论】:

    标签: c# amazon-web-services service


    【解决方案1】:

    正如 Jamie@AWS 在AWS Forum 所建议的那样。

    运行计划批处理作业的最佳方式是使用 AWS Cloud Watch Event + AWS Lambda + AWS Batch。

    您安排触发 Lambda 的 AWS Cloud Watch 事件。 然后 Lambda 向 AWS Batch 提交批处理作业,由 Docker 容器处理执行。

    【讨论】:

    • Lambda 有 5 分钟的硬超时,我不想重新设计此代码以在 5 分钟内运行。
    • Lambda 只提交批处理作业,这个过程不到一秒。然后 lamda 死了,AWS Batch 处理一切。
    【解决方案2】:

    既然你可能在做 Linux 路由,为什么不考虑运行一个 cron 作业呢?您可以安排程序在一天中的特定时间运行。

    Windows 当然也有类似的功能。

    【讨论】:

    • 我会写什么样的c#'程序'可以用cron来执行?可以用 cron 以某种方式触发 c# 控制台应用程序吗?
    • .NET 核心支持控制台应用程序 - docs.microsoft.com/en-us/dotnet/core/tutorials/…。您当然需要验证您的代码是否与 .NET 核心兼容,它可能会涉及更改,而不仅仅是您运行它的方式。
    • 我需要一个专用的 ec2 吗?我可以安排长时间运行的 c# 代码在没有专用服务器的情况下使用 aws 运行吗?
    • 你需要自己的实例,是的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2018-01-09
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    相关资源
    最近更新 更多