Skip to content

The module container-defitinion does not work when using aws_ecs_task_definition as target #321

@lays147

Description

@lays147

Description

(Is it a bug or a feature?)

I'm trying to use the container-definition module to set up a standalone ecs task that I'll trigger manually. However, the module outputs the json of the container definition without setting into an array that is expected as the input of container_definitions of aws_ecs_task_definition.

If the module is intended to be used only together with the service module, this should be highlighted in the docs.

Versions

  • Module version [Required]:
    6.0.6

Terraform v1.12.2
on linux_amd64

  • provider registry.terraform.io/hashicorp/aws v6.4.0

Reproduction Code [Required]

module "ecs_container_definition" {
  source = "terraform-aws-modules/ecs/aws//modules/container-definition"
  version = "~> 6.0"

  name      = "test"
  cpu       = 512
  memory    = 256
  essential = true
  image     = "hello-world:latest"
}

resource "aws_ecs_task_definition" "this" {
  family                   = "test"
  container_definitions    = module.ecs_container_definition.container_definition_json
  requires_compatibilities = ["FARGATE"]
  network_mode             = "awsvpc"
  task_role_arn            = aws_iam_role.task_access.arn
  execution_role_arn       = aws_iam_role.task_execution.arn
  cpu       = 512
  memory    = 256
}

Steps to reproduce the behavior:

Try to run the terraform code above and you get an error.

Expected behavior

It should work with aws_ecs_task_definition.

Actual behavior

Planning failed. Terraform encountered an error while generating this plan.

╷
│ Error: ECS Task Definition container_definitions is invalid: json: cannot unmarshal object into Go value of type []types.ContainerDefinition
│ 
│   with aws_ecs_task_definition.this,
│   on ecs-task.tf line 16, in resource "aws_ecs_task_definition" "this":
│   16:   container_definitions    = module.ecs_container_definition.container_definition_json
│ 

Output from module.ecs_container_definition.container_definition_json

"{\"cpu\":256,\"entrypoint\":[],\"environment\":[],\"environmentFiles\":[],\"essential\":true,\"image\":\"hello-world:latest\",\"interactive\":false,\"linuxParameters\":{\"initProcessEnabled\":false},\"logConfiguration\":{\"logDriver\":\"awslogs\",\"options\":{\"awslogs-group\":\"/aws/ecs/iam-auth-rds\",\"awslogs-region\":\"us-east-1\",\"awslogs-stream-prefix\":\"ecs\"}},\"memory\":512,\"mountPoints\":[],\"name\":\"iam-auth-rds\",\"privileged\":false,\"pseudoTerminal\":false,\"readonlyRootFilesystem\":true,\"restartPolicy\":{\"enabled\":true,\"ignoredExitCodes\":[]},\"startTimeout\":30,\"stopTimeout\":120,\"systemControls\":[],\"versionConsistency\":\"disabled\",\"volumesFrom\":[]}"

Since the output is not a list of containers, it is incompatible with the input of the resource.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions