Difference between revisions of "Terraform resource: aws ecs service"
Jump to navigation
Jump to search
↑ 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
(19 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | <code>[[aws_ecs_service]]</code> ([https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service ref]) | + | <code>[[aws_ecs_service]]</code>([https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service ref]) |
− | + | __NOTOC__ | |
− | |||
− | |||
− | |||
== Arguments == | == 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>[[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]]</code> | + | * <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>[[task_definition]]</code> <ref>https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service#task_definition</ref> | ||
* <code>[[security_groups]]</code> | * <code>[[security_groups]]</code> | ||
* <code>[[enable_execute_command]]</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 == | == Errors == | ||
* <code>[[Error: error creating MyECSServiceName service]]</code> | * <code>[[Error: error creating MyECSServiceName service]]</code> | ||
** <code>[[Error: error creating MyECSServiceName service .../... does not have an associated load balancer]]</code> | ** <code>[[Error: error creating MyECSServiceName service .../... does not have an associated load balancer]]</code> | ||
+ | |||
+ | == News == | ||
+ | * [[Amazon ECS services now support multiple load balancer target groups]] | ||
== Related == | == Related == | ||
− | * [[AWS ECS service]] | + | * [[AWS ECS service]]: <code>[[aws_ecs_cluster]]</code> |
+ | * [[Ansible module: ecs_service]] | ||
+ | * [[DRAINING]] | ||
== See also == | == See also == | ||
* {{aws_ecs_service}} | * {{aws_ecs_service}} | ||
* {{Terraform ECS}} | * {{Terraform ECS}} | ||
− | |||
− | |||
− | |||
[[Category:Terraform]] | [[Category:Terraform]] | ||
[[Category:AWS]] | [[Category:AWS]] |
Latest revision as of 12:19, 24 May 2023
Arguments[edit]
launch_type
:EC2, FARGATE, and EXTERNAL
. Default: EC2. https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service#launch_typeload_balancer (argument)
:target_group_arn, container_name, container_port
task_definition
[1]security_groups
enable_execute_command
desired_count
placement_constraints
network_configuration
[2]deployment_minimum_healthy_percent
[3]
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]
- Terraform resource:
aws_ecs_service: launch_type (EC2, FARGATE), iam_role, depends_on, load_balancer, desired_count, placement_constraints, deployment_minimum_healthy_percent, iam role
- Terraform ECS: module, resources:
aws_ecs_cluster, aws_ecs_service: task definition, aws_ecs_task_definition: container_definitions
Advertising: