feat: native ECS blue/green deployment support @jaguer0 (#277)
## what- Add support for AWS ECS native (built-in) blue/green deployments, continuing the work started by @oycyc in #270.
- Expose the three provider blocks on all four
aws_ecs_servicevariants:deployment_configuration—strategy,bake_time_in_minutes,lifecycle_hook(incl.hook_details)load_balancer.advanced_configuration—alternate_target_group_arn,production_listener_rule,role_arn,test_listener_ruleservice_connect_configuration→client_alias.test_traffic_rules
- Add
variable "deployment_configuration"with validation:strategy∈ROLLING/BLUE_GREEN,bake_time_in_minutes0–1440, andBLUE_GREENrequires (a) ≥1ecs_load_balancersentry each withadvanced_configurationand (b)deployment_controller_type = "ECS". - Add a complete, working
examples/blue-green(ALB viacloudposse/alb, production + alternate target groups, a weighted production listener rule, a test listener rule, and the ECS infrastructure IAM role) plus aTestExamplesBlueGreenterratest. - Raise floors:
aws >= 6.4(where native blue/green landed) andterraform >= 1.9(cross-variable validation).
why
- AWS shipped built-in ECS blue/green in July 2025 (AWS provider
v6.4.0); this module didn't expose it. - ⚠️ Floor bump / likely major version. Terraform schema-validates nested block type names even when a
dynamicblock'sfor_eachis empty, so these blocks requireaws >= 6.4for all module consumers — effectively a breaking change.terraform >= 1.9is needed for the single cross-variable validation; happy to swap that back to per-resourcepreconditions (floor>= 1.3) if you prefer a lower Terraform floor. - The ALB / listener-rule / target-group / IAM setup is caller-owned (this module doesn't create the ALB), matching the AWS docs —
examples/blue-greendemonstrates the full wiring, and theadvanced_configurationrequirement is enforced at plan time. This resolves the setup confusion raised on #270. - Only
ROLLING/BLUE_GREENare exposed;LINEAR/CANARYneed their ownlinear_configuration/canary_configurationblocks and are left as follow-up.
test
terraform validate+terraform-docs; the two negative validations verified to fail fast; and a fullTestExamplesBlueGreenapply + destroy against a live AWS account (44 resources created and torn down cleanly, all assertions green).
references
- Continues / supersedes #270 (original author @oycyc)
- AWS provider support: hashicorp/terraform-provider-aws#43434 (added in
v6.4.0) - AWS: ALB resources for ECS blue/green
fix: test examples/complete subnet @oycyc (#272)
Tests are failing ``` Error: Unsupported argument on .terraform/modules/subnets/main.tf line 286, in resource "aws_eip" "default": 286: vpc = trueAn argument named "vpc" is not expected here.
Fix by upgrading to the latest module for the `examples/complete`
</details>
<details>
<summary>Fix typos @raymondchen625 (#264)</summary>
## what
Fix the typos in the description of output `task_exec_role_name`.
</details>
## 🤖 Automatic Updates
<details>
<summary>Fix go version in tests @osterman (#267)</summary>
## what
- Update go `1.24`
## why
- Error loading shared library libresolv.so.2 in Go 1.20
## References
* https://sweetops.slack.com/archives/G014YEKDH4K/p1746672149263629
* https://github.com/golang/go/issues/59305#issuecomment-1488478737
* https://github.com/cloudposse/terraform-aws-cloudfront-s3-cdn/pull/294/#issuecomment-2859195553
</details>
<details>
<summary>Replace Makefile with atmos.yaml @osterman (#266)</summary>
## what
- Remove `Makefile`
- Add `atmos.yaml`
## why
- Replace `build-harness` with `atmos` for readme genration
## References
* DEV-3229 Migrate from build-harness to atmos
</details>