为 ECS 服务中的所有任务定义唯一的环境变量

Define unique Environment variables for all tasks in ECS Service

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

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

重要说明:此服务 运行 在 Fargate 而不是 EC2 实例

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

但是,您可以为服务外部任务的变量提供覆盖,您可以使用 run-task or start-task 和 AWS CLI 的 --overrides或任何 AWS SDK 中的等效项。