簡體   English   中英

從 Terraform 輸入變量中獲取 ECS 任務定義環境變量

[英]Take ECS Task Definition environment variables from Terraform input variables

我正在嘗試使用 Terraform 部署 ECS 任務定義。 這是我的 ECS 任務定義資源代碼:

resource "aws_ecs_task_definition" "my_TD" {
  family                   = "my_container"
  container_definitions    = <<DEFINITION
    [{
      "name": "my_container",
      "image": "${format("%s:qa", var.my_ecr_arn)}",
      "portMappings": [
        {
          "containerPort": 80,
          "hostPort": 80
        }
      ],
      "memory": 300,
      "networkMode": "awsvpc",
      "environment": [
        {
          "name": "PORT",
          "value": "80"
        },
        {
          "name": "Token",
          "value": "xxxxxxxx"
        }
      ]
    }
  ]
  DEFINITION
  requires_compatibilities = ["EC2"]
  network_mode             = "awsvpc"
  cpu                      = "256"
  memory                   = "512"
  task_role_arn            = var.ecs_role
  execution_role_arn       = var.ecs_role
}

環境變量在這里是硬編碼的。 因此,我嘗試從 terraform 輸入中獲取這些環境變量。 所以,我修改了:

variable "my_env_variables"{
  default = [
        {
          "name": "PORT",
          "value": "80"
        },
        {
          "name": "token",
          "value": "xxxxx"
        }
      ]
}

...
...
"environment" : "${var.my_env_variables}"
...
...

它給了我這樣的問題:

var.my_env_variables is tuple with 1 element

Cannot include the given value in a string template: string required.

我是 Terraform 的新手。 我該如何解決這個問題?

您需要 json 字符串,您可以使用jsonencode獲取該字符串 因此,您可以嘗試以下操作:

resource "aws_ecs_task_definition" "my_TD" {
  family                   = "my_container"
  container_definitions    = <<DEFINITION
    [{
      "name": "my_container",
      "image": "${format("%s:qa", var.my_ecr_arn)}",
      "portMappings": [
        {
          "containerPort": 80,
          "hostPort": 80
        }
      ],
      "memory": 300,
      "networkMode": "awsvpc",
      "environment": ${jsonencode(var.my_env_variables)}
    }
  ]
  DEFINITION
  requires_compatibilities = ["EC2"]
  network_mode             = "awsvpc"
  cpu                      = "256"
  memory                   = "512"
  task_role_arn            = var.ecs_role
  execution_role_arn       = var.ecs_role
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM