【问题标题】:How to provide tasks with different environment variables ECS Terraform如何为任务提供不同环境变量 ECS Terraform
【发布时间】:2021-06-10 09:14:58
【问题描述】:

我有一个 ECS 服务,在该 ECS 服务中,我想从同一个任务定义中启动 3 个任务。我需要将这些任务中的每一个都放在一个单独的 EC2 实例上,这看起来很简单,但是我想向每个正在运行的任务传递一个不同的命令,以通过我的 CLI 中的 CLI 指定在哪里可以找到它们的配置和一些其他选项正在运行的应用程序。

例如对于任务 1,我想通过 run-node CONFIG_PATH="/tmp/nodes/node_0 和任务 2 run-node CONFIG_PATH="/tmp/nodes/node_1" --bootnode true 和任务 3 run-node CONFIG_PATH="/tmp/nodes/node_0 --http true"

我正在努力了解如何使用 Terraform 在单个服务中管理像这样的单个任务实例,管理多个完全相等的实例似乎真的很容易,但我找不到传递自定义覆盖的方法到所有运行相同任务定义的每个任务。

我认为这可能是一个不同的开发运维自动化工具的工作,但如果可能的话,我希望在 Terraform 中继续这样做。

【问题讨论】:

  • 听起来你只需要pass a variable using the =var command? 或使用.tfvars 文件。除此之外,我正在努力解决您的问题
  • 这听起来应该使用单独的任务定义。为什么你只想使用一个?

标签: amazon-web-services amazon-ec2 terraform amazon-ecs


【解决方案1】:

这不是 terraform 的限制。这就是 ECS 服务的工作方式 - 运行相同任务定义的精确副本。因此,您无法在 ECS 服务中自定义单个任务,因为所有这些任务都应该是相同的、可互换的和一次性的。

要提供覆盖,您必须在服务之外运行任务,您可以使用 run-taskstart-task 和 AWS CLI 的 --overrides 或任何 AWS 开发工具包中的等效项来执行此操作。遗憾的是,在 terraform 中没有等效项,除了使用 AWS CLI 运行 local-exec

【讨论】:

    猜你喜欢
    • 2017-09-05
    • 1970-01-01
    • 2021-12-01
    • 2021-01-14
    • 1970-01-01
    • 2017-10-14
    • 2019-12-01
    • 2021-12-08
    • 2020-11-13
    相关资源
    最近更新 更多