Difference between revisions of "Terraform resource: aws ecs service"

From wikieduonline
Jump to navigation Jump to search
 
(46 intermediate revisions by 4 users not shown)
Line 1: Line 1:
* https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service
+
<code>[[aws_ecs_service]]</code>([https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service ref])
 +
__NOTOC__
 +
== Arguments ==
 +
* <code>[[launch_type]]</code>: <code>EC2, [[FARGATE]], and EXTERNAL</code>. Default: [[EC2]]. https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service#launch_type
 +
* <code>[[load_balancer (argument)]]</code>: <code>[[target_group_arn]], [[container_name]], [[container_port]]</code>
 +
* <code>[[task_definition]]</code> <ref>https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service#task_definition</ref>
 +
* <code>[[security_groups]]</code>
 +
* <code>[[enable_execute_command]]</code>
 +
* <code>[[desired_count]]</code>
 +
* <code>[[placement_constraints]]</code>
 +
* <code>[[network_configuration]]</code> <ref>https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service#network_configuration</ref>
 +
* <code>[[deployment_minimum_healthy_percent]]</code> <ref>https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service#deployment_minimum_healthy_percent</ref>
 +
 
 +
== Examples ==
 +
== Official example ==
 +
{{terraform_aws_ecs_service_official_example}}
 +
 
 +
== Additional examples ==
 +
resource "aws_ecs_service" "your_service" {
 +
  count          = var.network_name == "prod" ? 1 : 0
 +
  name            = "your_service-${var.env}-service"
 +
  cluster        = [[aws_ecs_cluster]].your_cluster.name
 +
  [[task_definition]] = "${[[aws_ecs_task_definition]].your_task[0].family}:${aws_ecs_task_definition.your_task[0].revision}"
 +
 +
  [[launch_type]]  = "[[FARGATE]]"
 +
  [[desired_count]] = var.your_service_desired_count
 +
 +
  [[network_configuration]] {
 +
    security_groups  = [aws_security_group.your_sg[0].id]
 +
    subnets          = [for s in [[data.aws_subnet.all_private]] : s.id]
 +
    [[assign_public_ip]] = false
 +
  }
 +
 +
  [[load_balancer]] {
 +
    [[target_group_arn]] = [[aws_lb_target_group]].your_tg[0].arn
 +
    container_name  = "your-container-${var.env}-c"
 +
    [[container_port]]  = 4444
 +
  }
 +
}
 +
 
 +
== Errors ==
 +
* <code>[[Error: error creating MyECSServiceName service]]</code>
 +
** <code>[[Error: error creating MyECSServiceName service .../... does not have an associated load balancer]]</code>
  
== XX ==
+
== News ==
* <code>[[launch_type]]</code>: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service#launch_type
+
* [[Amazon ECS services now support multiple load balancer target groups]]
* <code>[[target_group_arn]]</code>
+
 
* <code>[[task_definition]]</code> <ref>https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service#task_definition</ref>
+
== Related ==
 +
* [[AWS ECS service]]: <code>[[aws_ecs_cluster]]</code>
 +
* [[Ansible module: ecs_service]]
 +
* [[DRAINING]]
  
 
== See also ==
 
== See also ==
 +
* {{aws_ecs_service}}
 
* {{Terraform ECS}}
 
* {{Terraform ECS}}
* {{terraform aws resources}}
 
  
 
[[Category:Terraform]]
 
[[Category:Terraform]]
 
[[Category:AWS]]
 
[[Category:AWS]]

Latest revision as of 12:19, 24 May 2023

aws_ecs_service(ref)

Arguments[edit]

Examples[edit]

Official example[edit]

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]"
 }
}

Additional examples[edit]

resource "aws_ecs_service" "your_service" {
  count           = var.network_name == "prod" ? 1 : 0
  name            = "your_service-${var.env}-service"
  cluster         = aws_ecs_cluster.your_cluster.name
  task_definition = "${aws_ecs_task_definition.your_task[0].family}:${aws_ecs_task_definition.your_task[0].revision}"

  launch_type   = "FARGATE"
  desired_count = var.your_service_desired_count 

  network_configuration {
    security_groups  = [aws_security_group.your_sg[0].id]
    subnets          = [for s in data.aws_subnet.all_private : s.id]
    assign_public_ip = false
  } 

  load_balancer {
    target_group_arn = aws_lb_target_group.your_tg[0].arn
    container_name   = "your-container-${var.env}-c"
    container_port   = 4444
  }
}

Errors[edit]

News[edit]

Related[edit]

See also[edit]

  • https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service#task_definition
  • https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service#network_configuration
  • https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service#deployment_minimum_healthy_percent
  • Advertising: