Skip to content

Commit 48c7150

Browse files
authored
feat: Add support for availability zone rebalancing (#262) (#269)
* feat: Add support for availability zone rebalancing (#262) * revert default value of availability zone rebalancing
1 parent 10c84e8 commit 48c7150

File tree

4 files changed

+5
-3
lines changed

4 files changed

+5
-3
lines changed

examples/complete/main.tf

+2-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,8 @@ module "ecs" {
151151
}
152152
]
153153

154-
subnet_ids = module.vpc.private_subnets
154+
subnet_ids = module.vpc.private_subnets
155+
availability_zone_rebalancing = "ENABLED"
155156
security_group_rules = {
156157
alb_ingress_3000 = {
157158
type = "ingress"

main.tf

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ module "service" {
5959
# Service
6060
ignore_task_definition_changes = try(each.value.ignore_task_definition_changes, false)
6161
alarms = try(each.value.alarms, {})
62+
availability_zone_rebalancing = try(each.value.availability_zone_rebalancing, "null")
6263
capacity_provider_strategy = try(each.value.capacity_provider_strategy, {})
6364
cluster_arn = module.cluster.arn
6465
deployment_circuit_breaker = try(each.value.deployment_circuit_breaker, {})

modules/service/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ module "ecs_service" {
340340
| <a name="input_track_latest"></a> [track\_latest](#input\_track\_latest) | Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource | `bool` | `true` | no |
341341
| <a name="input_triggers"></a> [triggers](#input\_triggers) | Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `timestamp()` | `map(string)` | `null` | no |
342342
| <a name="input_volume"></a> [volume](#input\_volume) | Configuration block for volumes that containers in your task may use | <pre>map(object({<br/> configure_at_launch = optional(bool)<br/> docker_volume_configuration = optional(object({<br/> autoprovision = optional(bool)<br/> driver = optional(string)<br/> driver_opts = optional(map(string))<br/> labels = optional(map(string))<br/> scope = optional(string)<br/> }))<br/> efs_volume_configuration = optional(object({<br/> authorization_config = optional(object({<br/> access_point_id = optional(string)<br/> iam = optional(string)<br/> }))<br/> file_system_id = string<br/> root_directory = optional(string)<br/> transit_encryption = optional(string)<br/> transit_encryption_port = optional(number)<br/> }))<br/> fsx_windows_file_server_volume_configuration = optional(object({<br/> authorization_config = optional(object({<br/> credentials_parameter = string<br/> domain = string<br/> }))<br/> file_system_id = string<br/> root_directory = string<br/> }))<br/> host_path = optional(string)<br/> name = optional(string)<br/> }))</pre> | `null` | no |
343-
| <a name="input_volume_configuration"></a> [volume\_configuration](#input\_volume\_configuration) | Configuration for a volume specified in the task definition as a volume that is configured at launch time | <pre>object({<br/> name = string<br/> managed_ebs_volume = list(object({<br/> encrypted = optional(bool)<br/> file_system_type = optional(string)<br/> iops = optional(number)<br/> kms_key_id = optional(string)<br/> size_in_gb = optional(number)<br/> snapshot_id = optional(string)<br/> throughput = optional(number)<br/> volume_type = optional(string)<br/> tag_specification = optional(list(object({<br/> resource_type = string<br/> propagate_tags = optional(string, "TASK_DEFINITION")<br/> tags = optional(map(string))<br/> })))<br/> }))<br/> })</pre> | `null` | no |
343+
| <a name="input_volume_configuration"></a> [volume\_configuration](#input\_volume\_configuration) | Configuration for a volume specified in the task definition as a volume that is configured at launch time | <pre>object({<br/> name = string<br/> managed_ebs_volume = list(object({<br/> encrypted = optional(bool)<br/> file_system_type = optional(string)<br/> iops = optional(number)<br/> kms_key_id = optional(string)<br/> size_in_gb = optional(number)<br/> snapshot_id = optional(string)<br/> throughput = optional(number)<br/> volume_type = optional(string)<br/> tag_specifications = optional(list(object({<br/> resource_type = string<br/> propagate_tags = optional(string, "TASK_DEFINITION")<br/> tags = optional(map(string))<br/> })))<br/> }))<br/> })</pre> | `null` | no |
344344
| <a name="input_vpc_lattice_configurations"></a> [vpc\_lattice\_configurations](#input\_vpc\_lattice\_configurations) | The VPC Lattice configuration for your service that allows Lattice to connect, secure, and monitor your service across multiple accounts and VPCs | <pre>object({<br/> role_arn = string<br/> target_group_arn = string<br/> port_name = string<br/> })</pre> | `null` | no |
345345
| <a name="input_wait_for_steady_state"></a> [wait\_for\_steady\_state](#input\_wait\_for\_steady\_state) | If true, Terraform will wait for the service to reach a steady state before continuing. Default is `false` | `bool` | `null` | no |
346346
| <a name="input_wait_until_stable"></a> [wait\_until\_stable](#input\_wait\_until\_stable) | Whether terraform should wait until the task set has reached `STEADY_STATE` | `bool` | `null` | no |

wrappers/service/main.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ module "wrapper" {
120120
task_exec_iam_statements = try(each.value.task_exec_iam_statements, var.defaults.task_exec_iam_statements, null)
121121
task_exec_secret_arns = try(each.value.task_exec_secret_arns, var.defaults.task_exec_secret_arns, ["arn:aws:secretsmanager:*:*:secret:*"])
122122
task_exec_ssm_param_arns = try(each.value.task_exec_ssm_param_arns, var.defaults.task_exec_ssm_param_arns, ["arn:aws:ssm:*:*:parameter/*"])
123+
task_tags = try(each.value.task_tags, var.defaults.task_tags, {})
123124
tasks_iam_role_arn = try(each.value.tasks_iam_role_arn, var.defaults.tasks_iam_role_arn, null)
124125
tasks_iam_role_description = try(each.value.tasks_iam_role_description, var.defaults.tasks_iam_role_description, null)
125126
tasks_iam_role_name = try(each.value.tasks_iam_role_name, var.defaults.tasks_iam_role_name, null)
@@ -129,7 +130,6 @@ module "wrapper" {
129130
tasks_iam_role_statements = try(each.value.tasks_iam_role_statements, var.defaults.tasks_iam_role_statements, null)
130131
tasks_iam_role_tags = try(each.value.tasks_iam_role_tags, var.defaults.tasks_iam_role_tags, {})
131132
tasks_iam_role_use_name_prefix = try(each.value.tasks_iam_role_use_name_prefix, var.defaults.tasks_iam_role_use_name_prefix, true)
132-
task_tags = try(each.value.task_tags, var.defaults.task_tags, {})
133133
timeouts = try(each.value.timeouts, var.defaults.timeouts, null)
134134
track_latest = try(each.value.track_latest, var.defaults.track_latest, true)
135135
triggers = try(each.value.triggers, var.defaults.triggers, null)

0 commit comments

Comments
 (0)