【问题标题】:AWS ECS Task single instanceAWS ECS 任务单实例
【发布时间】:2020-12-25 17:16:52
【问题描述】:

在我的架构中,当我在 S3 存储桶上收到一个新文件时,一个 lambda 函数会触发一个 ECS 任务。 当我同时收到多个文件时会出现问题:lambda 将触发作用于相同共享资源的同一 ECS 任务的多个实例。

我想确保特定 ECS 任务只运行 1 个实例,我该怎么做? 有没有具体的设置可以保证?

我尝试在运行ECS任务的新实例之前查询ECS集群,但是(使用AWS Python SDK)当任务处于PROVISIONING状态时我没有收到任何信息,sdk仅在任务时返回数据处于 PENDING 或 RUNNING 状态。

谢谢

【问题讨论】:

    标签: amazon-web-services amazon-ecs


    【解决方案1】:

    我认为您无法控制它,因为您的 S3 事件会触发新任务。检查任务是否已经在运行将更加困难,如果您收到大量文件,您可能会错过执行。

    你应该以不同的方式来实现你想要的。如果您只想要一个忘记从 S3 事件触发 ECS 任务的任务处理。如果您实现队列,它可能会更好。您的 S3 事件应该将信息(可能是通过 Lambda)添加到 SQS 队列中。

    从那里您可以让 ECS 服务执行 SQS long polling 并一次处理一条消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 2020-09-21
      • 2019-09-10
      • 2020-05-11
      • 1970-01-01
      • 2019-09-05
      • 1970-01-01
      相关资源
      最近更新 更多