Difference between revisions of "Terraform resource: aws ecs task definition"
Jump to navigation
Jump to search
Line 10: | Line 10: | ||
[[family]] (required) is a name for your task definition | [[family]] (required) is a name for your task definition | ||
[[container_definitions]]: [[name]], [[image]], [[cpu]], [[memory]], [[essential]], [[portMappings]] | [[container_definitions]]: [[name]], [[image]], [[cpu]], [[memory]], [[essential]], [[portMappings]] | ||
− | [[environment]] | + | [[environment]] = |
− | [[secrets]] | + | [[secrets]] = |
− | [[dependsOn]] | + | [[dependsOn]] = |
− | [[portMappings]] | + | [[portMappings]] = |
− | [[task_role_arn]] | + | [[task_role_arn]] = |
− | [[revision]] https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition#revision | + | [[revision]] = https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition#revision |
− | [[volume]] | + | [[volume]] = |
− | [[cpu]] | + | [[cpu]] = |
− | [[cpu_architecture]] | + | [[cpu_architecture]] = |
− | [[Terraform resource: aws ecs task definition, memory|memory]] | + | [[Terraform resource: aws ecs task definition, memory|memory =]] |
− | [[execution_role_arn]] | + | [[execution_role_arn]] = |
== Examples == | == Examples == |
Revision as of 08:26, 12 May 2023
aws_ecs_task_definition
(ref)
network_mode
(optional)none, bridge, awsvpc, and host
requires_compatibilities
: EC2, Fargate. https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition#requires_compatibilities
Contents
Attributes
family (required) is a name for your task definition container_definitions: name, image, cpu, memory, essential, portMappings environment = secrets = dependsOn = portMappings = task_role_arn = revision = https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_task_definition#revision volume = cpu = cpu_architecture = memory = execution_role_arn =
Examples
Official example
resource "aws_ecs_task_definition" "service" { family = "service" container_definitions = jsonencode([ { name = "first" image = "service-first" cpu = 10 memory = 512 essential = true portMappings = [ { containerPort = 80 hostPort = 80 } ] }, { name = "second" image = "service-second" cpu = 10 memory = 256 essential = true portMappings = [ { containerPort = 443 hostPort = 443 } ] } ]) volume { name = "service-storage" host_path = "/ecs/service-storage" } placement_constraints { type = "memberOf" expression = "attribute:ecs.availability-zone in [us-west-2a, us-west-2b]" } }
Example myservice
resource "aws_ecs_task_definition" "myservice" { family = "myservice" container_definitions = jsonencode([ { name = "first" image = "service-first" cpu = 10 memory = 512 essential = true portMappings = [ { containerPort = 80 hostPort = 80 } ] }, { name = "second" image = "service-second" cpu = 10 memory = 256 essential = true portMappings = [ { containerPort = 443 hostPort = 443 } ] } ]) volume { name = "service-storage" host_path = "/ecs/service-storage" } placement_constraints { type = "memberOf" expression = "attribute:ecs.availability-zone in [us-west-2a, us-west-2b]" } }
Official aws_ecs_service example
resource "aws_ecs_service" "mongo" { name = "mongodb" cluster = aws_ecs_cluster.foo.id task_definition = aws_ecs_task_definition.mongo.arn desired_count = 3 iam_role = aws_iam_role.foo.arn depends_on = [aws_iam_role_policy.foo] ordered_placement_strategy { type = "binpack" field = "cpu" } load_balancer { target_group_arn = aws_lb_target_group.foo.arn container_name = "mongo" container_port = 8080 } placement_constraints { type = "memberOf" expression = "attribute:ecs.availability-zone in [us-west-2a, us-west-2b]" } }
resource "aws_ecs_task_definition" "service" { family = "service" container_definitions = jsonencode([ { name = "first" image = "service-first" cpu = 10 memory = 512 essential = true portMappings = [ { containerPort = 80 hostPort = 80 } ] }, { name = "second" image = "service-second" cpu = 10 memory = 256 essential = true portMappings = [ { containerPort = 443 hostPort = 443 } ] } ]) volume { name = "service-storage" host_path = "/ecs/service-storage" } placement_constraints { type = "memberOf" expression = "attribute:ecs.availability-zone in [us-west-2a, us-west-2b]" } }
Errors
ECS Task Definition container definitions is invalid
Error: ClientException: Invalid Compatibilities
Essential container in task exited
Related
- AWS ECS task definitions
aws_secretsmanager_secret_version
aws ecs register-task-definition
aws ecs run-task
See also
- Terraform resource:
aws_ecs_task_definition: container_definitions, family, revision, cpu, cpu_architecture, memory, MemoryReservation, volume, execution_role_arn, requires_compatibilities, dependsOn
- Terraform ECS: module, resources:
aws_ecs_cluster, aws_ecs_service: task definition, aws_ecs_task_definition: container_definitions
Advertising: