-
Notifications
You must be signed in to change notification settings - Fork 9.8k
Apply changes for blue-green deployment in ECS Service #43434
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Community GuidelinesThis comment is added to every new Pull Request to provide quick reference to how the Terraform AWS Provider is maintained. Please review the information below, and thank you for contributing to the community that keeps the provider thriving! 🚀 Voting for Prioritization
Pull Request Authors
|
|
✅ Thank you for correcting the previously detected issues! The maintainers appreciate your efforts to make the review process as smooth as possible. |
Also fixes paralleltest linter findings. ```console % go test -count=1 ./internal/service/ecs/... -run=TestServiceNameFromARN ok github.com/hashicorp/terraform-provider-aws/internal/service/ecs 5.846s ```
jar-b
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 🎉
% make testacc PKG=ecs TESTS=TestAccECSService_
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.24.5 test ./internal/service/ecs/... -v -count 1 -parallel 20 -run='TestAccECSService_' -timeout 360m -vet=off
2025/07/17 12:05:39 Creating Terraform AWS Provider (SDKv2-style)...
2025/07/17 12:05:39 Initializing Terraform AWS Provider (SDKv2-style)...
--- PASS: TestAccECSService_DaemonSchedulingStrategy_setDeploymentMinimum (36.29s)
=== CONT TestAccECSService_ServiceRegistries_basic
--- PASS: TestAccECSService_DaemonSchedulingStrategy_basic (48.34s)
=== CONT TestAccECSService_ServiceRegistries_container
--- PASS: TestAccECSService_PlacementConstraints_basic (61.18s)
=== CONT TestAccECSService_PlacementStrategy_unnormalized
--- PASS: TestAccECSService_iamRole (64.07s)
=== CONT TestAccECSService_CapacityProviderStrategy_update
--- PASS: TestAccECSService_Tags_basic (72.03s)
=== CONT TestAccECSService_CapacityProviderStrategy_forceNewDeployment
--- PASS: TestAccECSService_VolumeConfiguration_basic (74.02s)
=== CONT TestAccECSService_CapacityProviderStrategy_basic
--- PASS: TestAccECSService_LaunchTypeEC2_network (76.06s)
=== CONT TestAccECSService_LaunchTypeFargate_basic
--- PASS: TestAccECSService_Tags_managed (81.66s)
=== CONT TestAccECSService_ServiceConnect_full
--- PASS: TestAccECSService_familyAndRevision (93.41s)
=== CONT TestAccECSService_LatticeConfigurations
--- PASS: TestAccECSService_basic (96.29s)
=== CONT TestAccECSService_disappears
--- PASS: TestAccECSService_PlacementStrategy_unnormalized (67.63s)
=== CONT TestAccECSService_Identity_RegionOverride
--- PASS: TestAccECSService_VolumeConfiguration_update (133.11s)
=== CONT TestAccECSService_Identity_Basic
=== NAME TestAccECSService_LaunchTypeFargate_basic
service_test.go:1655: Error running post-test destroy, there may be dangling resources: exit status 1
Error: deleting ENIs for EC2 Subnet (subnet-0d2a78be5e83f6a2c): listing EC2 Network Interfaces: operation error EC2: DescribeNetworkInterfaces, https response error StatusCode: 0, RequestID: , request send failed, Post "https://ec2.us-east-2.amazonaws.com/": dial tcp: lookup ec2.us-east-2.amazonaws.com: no such host
Error: deleting ENIs using Security Group (sg-01fc7970e2c4dc9aa): listing EC2 Network Interfaces: operation error EC2: DescribeNetworkInterfaces, https response error StatusCode: 0, RequestID: , request send failed, Post "https://ec2.us-east-2.amazonaws.com/": dial tcp: lookup ec2.us-east-2.amazonaws.com: no such host
Error: deleting ENIs using Security Group (sg-0e85c200e6201943a): listing EC2 Network Interfaces: operation error EC2: DescribeNetworkInterfaces, https response error StatusCode: 0, RequestID: , request send failed, Post "https://ec2.us-east-2.amazonaws.com/": dial tcp: lookup ec2.us-east-2.amazonaws.com: no such host
--- FAIL: TestAccECSService_LaunchTypeFargate_basic (69.77s)
=== CONT TestAccECSService_executeCommand
--- PASS: TestAccECSService_ServiceConnect_remove (160.58s)
=== CONT TestAccECSService_AvailabilityZoneRebalancing
--- PASS: TestAccECSService_LaunchTypeFargate_waitForSteadyState (167.47s)
=== CONT TestAccECSService_ServiceRegistries_removal
--- PASS: TestAccECSService_ServiceConnect_tls_with_empty_timeout (171.27s)
=== CONT TestAccECSService_Tags_propagate
--- PASS: TestAccECSService_ServiceRegistries_basic (137.88s)
=== CONT TestAccECSService_forceNewDeployment
--- PASS: TestAccECSService_CapacityProviderStrategy_forceNewDeployment (106.91s)
=== CONT TestAccECSService_PlacementStrategy_missing
--- PASS: TestAccECSService_PlacementStrategy_missing (0.92s)
=== CONT TestAccECSService_PlacementStrategy_basic
--- PASS: TestAccECSService_ServiceConnect_ingressPortOverride (181.06s)
=== CONT TestAccECSService_forceNewDeploymentTriggers
--- PASS: TestAccECSService_ServiceRegistries_container (136.76s)
=== CONT TestAccECSService_alb
--- PASS: TestAccECSService_Identity_RegionOverride (58.62s)
=== CONT TestAccECSService_multipleTargetGroups
--- PASS: TestAccECSService_LaunchTypeFargate_updateWaitForSteadyState (191.85s)
=== CONT TestAccECSService_clusterName
--- PASS: TestAccECSService_Identity_Basic (60.00s)
=== CONT TestAccECSService_VolumeConfiguration_tagSpecifications
--- PASS: TestAccECSService_executeCommand (55.38s)
=== CONT TestAccECSService_VolumeConfiguration_volumeInitializationRate
--- PASS: TestAccECSService_ServiceRegistries_changes (232.94s)
=== CONT TestAccECSService_BlueGreenDeployment_createFailure
--- PASS: TestAccECSService_AvailabilityZoneRebalancing (74.49s)
=== CONT TestAccECSService_deploymentCircuitBreaker
--- PASS: TestAccECSService_forceNewDeployment (60.99s)
=== CONT TestAccECSService_DeploymentValues_minZeroMaxOneHundred
--- PASS: TestAccECSService_Tags_propagate (68.55s)
=== CONT TestAccECSService_DeploymentValues_basic
--- PASS: TestAccECSService_forceNewDeploymentTriggers (61.62s)
=== CONT TestAccECSService_DeploymentConfiguration_strategy
--- PASS: TestAccECSService_ServiceConnect_full (161.85s)
=== CONT TestAccECSService_BlueGreenDeployment_waitServiceActive
--- PASS: TestAccECSService_CapacityProviderStrategy_basic (171.16s)
=== CONT TestAccECSService_BlueGreenDeployment_updateFailure
--- PASS: TestAccECSService_clusterName (59.29s)
=== CONT TestAccECSService_BlueGreenDeployment_changeStrategy
--- PASS: TestAccECSService_VolumeConfiguration_tagSpecifications (72.26s)
=== CONT TestAccECSService_LaunchTypeFargate_platformVersion
--- PASS: TestAccECSService_loadBalancerChanges (268.18s)
=== CONT TestAccECSService_VolumeConfiguration_throughputTypeChange
--- PASS: TestAccECSService_disappears (177.60s)
=== CONT TestAccECSService_alarmsAdd
--- PASS: TestAccECSService_ServiceRegistries_removal (110.82s)
=== CONT TestAccECSService_BlueGreenDeployment_circuitBreakerRollback
--- PASS: TestAccECSService_PlacementStrategy_basic (99.91s)
=== CONT TestAccECSService_PlacementConstraints_emptyExpression
--- PASS: TestAccECSService_DeploymentControllerType_codeDeploy (286.41s)
=== CONT TestAccECSService_BlueGreenDeployment_basic
--- PASS: TestAccECSService_healthCheckGracePeriodSeconds (300.92s)
=== CONT TestAccECSService_alarmsUpdate
--- PASS: TestAccECSService_DeploymentValues_minZeroMaxOneHundred (67.24s)
=== CONT TestAccECSService_replicaSchedulingStrategy
--- PASS: TestAccECSService_deploymentCircuitBreaker (67.41s)
=== CONT TestAccECSService_DeploymentControllerType_external
--- PASS: TestAccECSService_DeploymentValues_basic (66.83s)
=== CONT TestAccECSService_DeploymentControllerType_codeDeployUpdateDesiredCountAndHealthCheckGracePeriod
--- PASS: TestAccECSService_VolumeConfiguration_volumeInitializationRate (110.07s)
=== CONT TestAccECSService_DeploymentControllerMutability_codeDeployToECS
--- PASS: TestAccECSService_DeploymentConfiguration_strategy (82.42s)
=== CONT TestAccECSService_ServiceConnect_basic
--- PASS: TestAccECSService_DeploymentControllerType_external (26.93s)
--- PASS: TestAccECSService_LaunchTypeFargate_platformVersion (70.95s)
--- PASS: TestAccECSService_PlacementConstraints_emptyExpression (67.70s)
--- PASS: TestAccECSService_alarmsAdd (75.21s)
--- PASS: TestAccECSService_CapacityProviderStrategy_update (294.51s)
--- PASS: TestAccECSService_VolumeConfiguration_throughputTypeChange (93.67s)
--- PASS: TestAccECSService_alarmsUpdate (65.00s)
--- PASS: TestAccECSService_replicaSchedulingStrategy (67.45s)
--- PASS: TestAccECSService_multipleTargetGroups (265.13s)
--- PASS: TestAccECSService_alb (271.57s)
--- PASS: TestAccECSService_ServiceConnect_basic (146.62s)
--- PASS: TestAccECSService_DeploymentControllerMutability_codeDeployToECS (241.97s)
--- PASS: TestAccECSService_BlueGreenDeployment_createFailure (347.61s)
--- PASS: TestAccECSService_LatticeConfigurations (599.47s)
--- PASS: TestAccECSService_DeploymentControllerType_codeDeployUpdateDesiredCountAndHealthCheckGracePeriod (477.81s)
--- PASS: TestAccECSService_BlueGreenDeployment_waitServiceActive (931.89s)
--- PASS: TestAccECSService_BlueGreenDeployment_updateFailure (1086.95s)
--- PASS: TestAccECSService_BlueGreenDeployment_basic (1416.11s)
--- PASS: TestAccECSService_BlueGreenDeployment_changeStrategy (1541.21s)
--- PASS: TestAccECSService_BlueGreenDeployment_circuitBreakerRollback (3347.24s)
FAIL
FAIL github.com/hashicorp/terraform-provider-aws/internal/service/ecs 3631.560sFailure is transient and unrelated to this change.
ewbankkit
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 🚀.
% make testacc TESTARGS='-run=TestAccECSService_BlueGreenDeployment_\|TestAccECSService_basic' PKG=ecs ACCTEST_PARALLELISM=3
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.24.5 test ./internal/service/ecs/... -v -count 1 -parallel 3 -run=TestAccECSService_BlueGreenDeployment_\|TestAccECSService_basic -timeout 360m -vet=off
2025/07/17 14:48:31 Creating Terraform AWS Provider (SDKv2-style)...
2025/07/17 14:48:31 Initializing Terraform AWS Provider (SDKv2-style)...
=== RUN TestAccECSService_basic
=== PAUSE TestAccECSService_basic
=== RUN TestAccECSService_BlueGreenDeployment_basic
=== PAUSE TestAccECSService_BlueGreenDeployment_basic
=== RUN TestAccECSService_BlueGreenDeployment_circuitBreakerRollback
=== PAUSE TestAccECSService_BlueGreenDeployment_circuitBreakerRollback
=== RUN TestAccECSService_BlueGreenDeployment_createFailure
=== PAUSE TestAccECSService_BlueGreenDeployment_createFailure
=== RUN TestAccECSService_BlueGreenDeployment_changeStrategy
=== PAUSE TestAccECSService_BlueGreenDeployment_changeStrategy
=== RUN TestAccECSService_BlueGreenDeployment_updateFailure
=== PAUSE TestAccECSService_BlueGreenDeployment_updateFailure
=== RUN TestAccECSService_BlueGreenDeployment_waitServiceActive
=== PAUSE TestAccECSService_BlueGreenDeployment_waitServiceActive
=== CONT TestAccECSService_basic
=== CONT TestAccECSService_BlueGreenDeployment_changeStrategy
=== CONT TestAccECSService_BlueGreenDeployment_circuitBreakerRollback
--- PASS: TestAccECSService_basic (74.02s)
=== CONT TestAccECSService_BlueGreenDeployment_createFailure
--- PASS: TestAccECSService_BlueGreenDeployment_createFailure (340.37s)
=== CONT TestAccECSService_BlueGreenDeployment_waitServiceActive
--- PASS: TestAccECSService_BlueGreenDeployment_waitServiceActive (958.40s)
=== CONT TestAccECSService_BlueGreenDeployment_basic
--- PASS: TestAccECSService_BlueGreenDeployment_changeStrategy (1590.18s)
=== CONT TestAccECSService_BlueGreenDeployment_updateFailure
--- PASS: TestAccECSService_BlueGreenDeployment_basic (1418.32s)
--- PASS: TestAccECSService_BlueGreenDeployment_updateFailure (1322.56s)
--- PASS: TestAccECSService_BlueGreenDeployment_circuitBreakerRollback (3466.86s)
PASS
ok github.com/hashicorp/terraform-provider-aws/internal/service/ecs 3472.166s|
Thanks for your contribution, @djglaser! 👍 |
|
Warning This Issue has been closed, meaning that any additional comments are much easier for the maintainers to miss. Please assume that the maintainers will not see them. Ongoing conversations amongst community members are welcome, however, the issue will be locked after 30 days. Moving conversations to another venue, such as the AWS Provider forum, is recommended. If you have additional concerns, please open a new issue, referencing this one where needed. |
|
This functionality has been released in v6.4.0 of the Terraform AWS Provider. Please see the Terraform documentation on provider versioning or reach out if you need any assistance upgrading. For further feature requests or bug reports with this functionality, please create a new GitHub issue following the template. Thank you! |
|
I'm going to lock this pull request because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues. |
Rollback Plan
If a change needs to be reverted, we will publish an updated version of the library.
Changes to Security Controls
Are there any changes to security controls (access controls, encryption, logging) in this pull request? If so, explain.
No
Description
Adds support for blue/green deployment in ECS Service, enabling users to perform controlled production releases with testing and validation.
Key Changes:
strategy- SupportsBLUE_GREENin addition to existingROLLINGstrategybake_time_in_minutes- Configurable bake time (0-1440 minutes) for blue/green deploymentstest_traffic_rules.Stabilization logic
wait_for_steady_state = true.Testing:
Relations
Closes #43431.
References
Output from Acceptance Testing