如何通过 terraform 在 ecs 任务定义中指定环境变量?

Posted

技术标签:

【中文标题】如何通过 terraform 在 ecs 任务定义中指定环境变量?【英文标题】:How can I specify environment variable on ecs task definition via terraform? 【发布时间】:2021-12-01 00:34:22 【问题描述】:

我在 terraform 中有以下配置来部署 ecs 任务定义。可以创建任务并且所有配置都很好,除了环境变量。我在container_definitions 中指定了environment,但任务仍然没有定义任何环境变量。

如何在此脚本中指定环境变量?

resource "aws_ecs_task_definition" "data-check" 
  family = "$var.stage-data-check"

  execution_role_arn = aws_iam_role.ecs_data_check_role.arn

  container_definitions    = <<TASK_DEFINITION
  [
    
      "name"      : "data-check-task",
      "image"     : "$local.image_name",
      "essential" : true,
      "environment" : [
        "name" : "this is name"
      ],
      "logConfiguration" : 
        "logDriver" : "awslogs",
        "options" : 
          "awslogs-region" : "$var.aws_region",
          "awslogs-group" : "/ecs/$local.ecs_name",
          "awslogs-stream-prefix" : "ecs"
        
      
    
  ]
TASK_DEFINITION

  cpu                      = 1024
  memory                   = 2048
  requires_compatibilities = ["FARGATE"]
  network_mode             = "awsvpc"

【问题讨论】:

【参考方案1】:

你错过了一些东西,声明 env vars 的正确方法是:

    "environment": [
        "name": "VARNAME", "value": "VARVAL"
    ],

【讨论】:

以上是关于如何通过 terraform 在 ecs 任务定义中指定环境变量?的主要内容,如果未能解决你的问题,请参考以下文章

EFS 卷绑定在 ECS 任务定义的每个“terraform apply”上自动分离/重新附加

如何忽略 Terraform 中的嵌套字段?

Terraform Fargate 任务定义请求执行角色

用于 ECS 任务/容器的 Terraform AWS CloudWatch 日志组

如何通过 Terraform 部署 Open*** EC2 实例? [关闭]

如何通过 Terraform 启动没有密钥对的 EC2 实例?