【问题标题】:Define unique Environment variables for all tasks in ECS Service为 ECS 服务中的所有任务定义唯一的环境变量
【发布时间】:2021-04-04 10:31:29
【问题描述】:

我有一个 ECS 服务,它将运行一个任务的多个实例。所有这些实例都使用完全相同的任务定义,但都需要提供一个对该实例唯一的特定环境变量 INDEX。我希望该服务监视每个实例并在它失败时使用相同的环境变量值重新启动它(即如果 INDEX=555 的任务失败,我希望该服务启动一个 INDEX=555 的新任务来替换它)。目前我只看到在任务定义本身中设置环境变量的选项,这将需要我创建完全相同任务的多个版本(以及相应的服务),唯一的区别是环境变量(这看起来很浪费,而且会弄乱该集群中的任务定义列表和服务列表)。

简而言之,我想配置我的 ECS 服务,以便我可以提供特定环境变量的值列表以及一个任务定义,并让它创建一个任务实例到环境变量的 1:1 映射。有可能这样做吗?如果是这样,我该如何做到这一点?

重要提示:此服务在 Fargate 而不是 EC2 实例上运行

【问题讨论】:

    标签: amazon-web-services amazon-ecs aws-fargate


    【解决方案1】:

    很遗憾,您不能对 ECS 服务执行此操作。 ECS 服务旨在运行一次性、可交换和可扩展的相同任务的精确副本

    但是,您可以为服务之外的任务的变量提供覆盖,您可以使用 run-taskstart-task 与 AWS CLI 的 --overrides 或任何 AWS 中的等效项来完成SDK。

    【讨论】:

    • 如果我在服务之外实例化这些任务,即使任务实例关闭,它们是否仍会重新启动?如果我将期望的状态设置为正在运行,集群是否仍会重新启动任务实例(使用相同的环境变量覆盖)?
    • @Prad 遗憾的是他们不会重新启动。为此,您需要服务。如果要使用服务,则需要为具有不同环境变量的每个任务定义创建服务。在服务中你不能覆盖任何任务参数。
    猜你喜欢
    • 2017-09-05
    • 2019-12-01
    • 2021-01-14
    • 2021-12-01
    • 2017-03-04
    • 1970-01-01
    • 2021-05-13
    • 2020-08-03
    • 2017-10-14
    相关资源
    最近更新 更多