【问题标题】:Run process as Daemon on AWS Infrastructure在 AWS 基础设施上作为守护进程运行进程
【发布时间】:2017-01-12 01:24:45
【问题描述】:

我想在 AWS 基础设施上运行一个进程作为守护进程,负责读取 AWS SQS 队列并创建一些进程。

我的第一种方法是使用部署在 ECS Container 服务上的 docker 容器。所以我会在while true loop,睡几秒钟。使用它,我可以控制处理之间的睡眠时间,所以如果我的 SQS 队列已满,我可以减少睡眠时间。所以

我知道可以将 AWS Lambda 安排为 cron 作业,但我无法控制 cron 时间(减少或增加 sqs 大小的响应)。

AWS Lambda 方法更简单,不需要“任何”基础设施,但灵活性较低。 有人知道另一种方法吗?

【问题讨论】:

  • 您可以使用 Lambda 调度程序,在您的 lambda 处理程序中,您可以只向 SQS 询问 20 条消息(我相信这是您一次可以获得的最大值)。如果它收到所有 20 条消息,那么在它完成之前它会使用 aws-sdk (AWS.Lambda.invoke(context.functionName)) 重新调用自己。如果消息少于 20 条,那么它会在处理完这些消息后成功结束。

标签: docker aws-lambda amazon-sqs amazon-ecs


【解决方案1】:

查看 AWS Lambda 在后台处理 cron 调度的方式(请参阅 https://docs.aws.amazon.com/lambda/latest/dg/with-scheduled-events.htmlhttp://docs.aws.amazon.com/AmazonCloudWatch/latest/events/RunLambdaSchedule.html),您应该能够找到触发 lambda 的 Cloudwatch 事件并在 lambda 本身内对其进行修改。不过,用于 Lambda 和 Cloudwatch Events 的编程 API 的文档相当稀缺,因此您必须自己弄清楚。

总而言之,这听起来并不比运行自己的容器更简单,尽管如果您有很多此类事情要做,将它们全部打包到库中可能不会有什么坏处。

【讨论】:

    猜你喜欢
    • 2023-03-02
    • 2013-03-09
    • 2012-12-03
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2015-04-16
    相关资源
    最近更新 更多