Skip to content

Conversation

djglaser
Copy link
Contributor

@djglaser djglaser commented Aug 21, 2025

Title

Enable customer-initiated Blue/Green deployment rollback using SIGINT and add deployment_configuration monitoring to read handler.

Description

This PR adds support for graceful termination of Blue/Green deployments in ECS services by handling SIGINT signals. When enabled, this allows customers to safely cancel an in-progress Blue/Green deployment and automatically trigger a rollback to the previous stable state. It also implements read handler changes needed for handling out-of-band changes made to Blue/Green deployment configurations.

Key Changes

  • Added new sigint_cancellation boolean attribute to ECS service resource (defaults to false)
  • Implemented SIGINT signal handling and deployment rollback logic
  • Added support for detecting terminal deployment states
  • Enhanced deployment status monitoring and rollback coordination
  • Added acceptance tests for SIGINT handling and rollback scenarios
  • Fixed deployment configuration read handling
  • Added test coverage for out-of-band deployment configuration changes

Example Usage

resource "aws_ecs_service" "example" {
  # ... other configuration ...
  
  deployment_configuration {
    strategy = "BLUE_GREEN"
    # ... other deployment config ...
  }
  
  sigint_cancellation = true
  wait_for_steady_state = true
}

Additional Notes

  • Deployment configuration strategy was changed from defaulting to ROLLING to a computed strategy, as this default value is set by the API.
  • Deployment configuration bake_time_in_minutes was changed to a computed strategy, as the default value is enforced by the API as well.
  • In TestAccECSService_BlueGreenDeployment_sigintRollback, ExpectNonEmptyPlan: true is needed for step 3: After SIGINT rollback, the actual ECS service state (using original task definition :1 differs from the desired step 2 configuration (task definition :2), creating expected configuration drift that validates the rollback succeeded.

Graceful Termination Logic for Blue/Green Deployments

The graceful termination logic handles interruption scenarios during ECS blue/green deployments through a coordinated cancellation and rollback mechanism:

Key Components:

  1. Cancellation Detection: waitForCancellation() monitors for context cancellation (SIGINT) and triggers automatic rollback when deployment is interrupted

  2. Smart Rollback: rollbackBlueGreenDeployment() checks deployment status before attempting rollback - skips if already in terminal state (successful/stopped/rollback_failed/rollback_successful)

  3. Graceful Shutdown: Uses StopServiceDeployment with StopTypeRollback to safely revert to previous stable state rather than leaving deployment in inconsistent state

  4. Timeout Protection: Implements 1-hour maximum wait before SIGKILL, ensuring process doesn't hang indefinitely

Flow:

waitForCancellation() Goroutine is spawned only once primary deployment ARN is available, as there is nothing to rollback prior to this being available
• On cancellation signal → immediate rollback initiation → wait for terminal status → cleanup
• Prevents partial deployments and maintains service stability during interruptions

This ensures blue/green deployments can be safely cancelled without leaving services in broken states.

Testing

  • Added acceptance tests TestAccECSService_BlueGreenDeployment_sigintRollback and TestAccECSService_BlueGreenDeployment_outOfBandRemoval
  • Enhanced existing Blue/Green deployment tests to update based on task definition change
  • Introduced script sigint_helper.go to simulate a customer-initiated SIGINT trigger (i.e. ^+C) on an UpdateService operation

Documentation Updates

  • New sigint_cancellation attribute
  • Example usage and behavior description

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.

Relations

Relates #43434
Relates #43502
Related #43558

References

Output from Acceptance Testing

Note: TestAccECSService_BlueGreenDeployment_sigintRollback only passes when ran in isolation. Otherwise, it gets error service_test.go:1089: Step 2/3, expected an error but got none. TestAccECSService_VolumeConfiguration_throughputTypeChange failure is transient and unrelated to this change (see #38475).

% make testacc TESTS=TestAccECSService PKG=ecs
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.24.6 test ./internal/service/ecs/... -v -count 1 -parallel 3  -run='TestAccECSService'  -timeout 360m -vet=off
2025/08/26 19:38:06 Creating Terraform AWS Provider (SDKv2-style)...
2025/08/26 19:38:06 Initializing Terraform AWS Provider (SDKv2-style)...
=== RUN   TestAccECSServiceDataSource_basic
=== PAUSE TestAccECSServiceDataSource_basic
=== RUN   TestAccECSServiceDataSource_loadBalancer
=== PAUSE TestAccECSServiceDataSource_loadBalancer
=== RUN   TestAccECSService_basic
=== PAUSE TestAccECSService_basic
=== RUN   TestAccECSService_Identity_Basic
=== PAUSE TestAccECSService_Identity_Basic
=== RUN   TestAccECSService_Identity_RegionOverride
=== PAUSE TestAccECSService_Identity_RegionOverride
=== RUN   TestAccECSService_disappears
=== PAUSE TestAccECSService_disappears
=== RUN   TestAccECSService_LatticeConfigurations
=== PAUSE TestAccECSService_LatticeConfigurations
=== RUN   TestAccECSService_PlacementStrategy_unnormalized
=== PAUSE TestAccECSService_PlacementStrategy_unnormalized
=== RUN   TestAccECSService_CapacityProviderStrategy_basic
=== PAUSE TestAccECSService_CapacityProviderStrategy_basic
=== RUN   TestAccECSService_CapacityProviderStrategy_forceNewDeployment
=== PAUSE TestAccECSService_CapacityProviderStrategy_forceNewDeployment
=== RUN   TestAccECSService_CapacityProviderStrategy_update
=== PAUSE TestAccECSService_CapacityProviderStrategy_update
=== RUN   TestAccECSService_VolumeConfiguration_basic
=== PAUSE TestAccECSService_VolumeConfiguration_basic
=== RUN   TestAccECSService_VolumeConfiguration_volumeInitializationRate
=== PAUSE TestAccECSService_VolumeConfiguration_volumeInitializationRate
=== RUN   TestAccECSService_VolumeConfiguration_tagSpecifications
=== PAUSE TestAccECSService_VolumeConfiguration_tagSpecifications
=== RUN   TestAccECSService_VolumeConfiguration_update
=== PAUSE TestAccECSService_VolumeConfiguration_update
=== RUN   TestAccECSService_VolumeConfiguration_throughputTypeChange
=== PAUSE TestAccECSService_VolumeConfiguration_throughputTypeChange
=== RUN   TestAccECSService_familyAndRevision
=== PAUSE TestAccECSService_familyAndRevision
=== RUN   TestAccECSService_healthCheckGracePeriodSeconds
=== PAUSE TestAccECSService_healthCheckGracePeriodSeconds
=== RUN   TestAccECSService_iamRole
=== PAUSE TestAccECSService_iamRole
=== RUN   TestAccECSService_DeploymentControllerType_codeDeploy
=== PAUSE TestAccECSService_DeploymentControllerType_codeDeploy
=== RUN   TestAccECSService_DeploymentControllerType_codeDeployUpdateDesiredCountAndHealthCheckGracePeriod
=== PAUSE TestAccECSService_DeploymentControllerType_codeDeployUpdateDesiredCountAndHealthCheckGracePeriod
=== RUN   TestAccECSService_DeploymentControllerType_external
=== PAUSE TestAccECSService_DeploymentControllerType_external
=== RUN   TestAccECSService_DeploymentControllerMutability_codeDeployToECS
=== PAUSE TestAccECSService_DeploymentControllerMutability_codeDeployToECS
=== RUN   TestAccECSService_alarmsAdd
=== PAUSE TestAccECSService_alarmsAdd
=== RUN   TestAccECSService_alarmsUpdate
=== PAUSE TestAccECSService_alarmsUpdate
=== RUN   TestAccECSService_BlueGreenDeployment_basic
=== PAUSE TestAccECSService_BlueGreenDeployment_basic
=== RUN   TestAccECSService_BlueGreenDeployment_outOfBandRemoval
=== PAUSE TestAccECSService_BlueGreenDeployment_outOfBandRemoval
=== RUN   TestAccECSService_BlueGreenDeployment_sigintRollback
    service_test.go:1084: SIGINT handling can't reliably be tested in CI
--- SKIP: TestAccECSService_BlueGreenDeployment_sigintRollback (0.00s)
=== 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_updateInPlace
=== PAUSE TestAccECSService_BlueGreenDeployment_updateInPlace
=== RUN   TestAccECSService_BlueGreenDeployment_waitServiceActive
=== PAUSE TestAccECSService_BlueGreenDeployment_waitServiceActive
=== RUN   TestAccECSService_BlueGreenDeployment_withoutTestListenerRule
=== PAUSE TestAccECSService_BlueGreenDeployment_withoutTestListenerRule
=== RUN   TestAccECSService_DeploymentConfiguration_strategy
=== PAUSE TestAccECSService_DeploymentConfiguration_strategy
=== RUN   TestAccECSService_DeploymentValues_basic
=== PAUSE TestAccECSService_DeploymentValues_basic
=== RUN   TestAccECSService_DeploymentValues_minZeroMaxOneHundred
=== PAUSE TestAccECSService_DeploymentValues_minZeroMaxOneHundred
=== RUN   TestAccECSService_deploymentCircuitBreaker
=== PAUSE TestAccECSService_deploymentCircuitBreaker
=== RUN   TestAccECSService_loadBalancerChanges
=== PAUSE TestAccECSService_loadBalancerChanges
=== RUN   TestAccECSService_clusterName
=== PAUSE TestAccECSService_clusterName
=== RUN   TestAccECSService_alb
=== PAUSE TestAccECSService_alb
=== RUN   TestAccECSService_multipleTargetGroups
=== PAUSE TestAccECSService_multipleTargetGroups
=== RUN   TestAccECSService_forceNewDeployment
=== PAUSE TestAccECSService_forceNewDeployment
=== RUN   TestAccECSService_forceNewDeploymentTriggers
=== PAUSE TestAccECSService_forceNewDeploymentTriggers
=== RUN   TestAccECSService_PlacementStrategy_basic
=== PAUSE TestAccECSService_PlacementStrategy_basic
=== RUN   TestAccECSService_PlacementStrategy_missing
=== PAUSE TestAccECSService_PlacementStrategy_missing
=== RUN   TestAccECSService_PlacementConstraints_basic
=== PAUSE TestAccECSService_PlacementConstraints_basic
=== RUN   TestAccECSService_PlacementConstraints_emptyExpression
=== PAUSE TestAccECSService_PlacementConstraints_emptyExpression
=== RUN   TestAccECSService_LaunchTypeFargate_basic
=== PAUSE TestAccECSService_LaunchTypeFargate_basic
=== RUN   TestAccECSService_LaunchTypeFargate_platformVersion
=== PAUSE TestAccECSService_LaunchTypeFargate_platformVersion
=== RUN   TestAccECSService_LaunchTypeFargate_waitForSteadyState
=== PAUSE TestAccECSService_LaunchTypeFargate_waitForSteadyState
=== RUN   TestAccECSService_LaunchTypeFargate_updateWaitForSteadyState
=== PAUSE TestAccECSService_LaunchTypeFargate_updateWaitForSteadyState
=== RUN   TestAccECSService_LaunchTypeEC2_network
=== PAUSE TestAccECSService_LaunchTypeEC2_network
=== RUN   TestAccECSService_DaemonSchedulingStrategy_basic
=== PAUSE TestAccECSService_DaemonSchedulingStrategy_basic
=== RUN   TestAccECSService_DaemonSchedulingStrategy_setDeploymentMinimum
=== PAUSE TestAccECSService_DaemonSchedulingStrategy_setDeploymentMinimum
=== RUN   TestAccECSService_replicaSchedulingStrategy
=== PAUSE TestAccECSService_replicaSchedulingStrategy
=== RUN   TestAccECSService_ServiceRegistries_basic
=== PAUSE TestAccECSService_ServiceRegistries_basic
=== RUN   TestAccECSService_ServiceRegistries_container
=== PAUSE TestAccECSService_ServiceRegistries_container
=== RUN   TestAccECSService_ServiceRegistries_changes
=== PAUSE TestAccECSService_ServiceRegistries_changes
=== RUN   TestAccECSService_ServiceRegistries_removal
=== PAUSE TestAccECSService_ServiceRegistries_removal
=== RUN   TestAccECSService_ServiceConnect_basic
=== PAUSE TestAccECSService_ServiceConnect_basic
=== RUN   TestAccECSService_ServiceConnect_full
=== PAUSE TestAccECSService_ServiceConnect_full
=== RUN   TestAccECSService_ServiceConnect_tls_with_empty_timeout
=== PAUSE TestAccECSService_ServiceConnect_tls_with_empty_timeout
=== RUN   TestAccECSService_ServiceConnect_ingressPortOverride
=== PAUSE TestAccECSService_ServiceConnect_ingressPortOverride
=== RUN   TestAccECSService_ServiceConnect_remove
=== PAUSE TestAccECSService_ServiceConnect_remove
=== RUN   TestAccECSService_ServiceConnect_outOfBandRemoval
=== PAUSE TestAccECSService_ServiceConnect_outOfBandRemoval
=== RUN   TestAccECSService_Tags_basic
=== PAUSE TestAccECSService_Tags_basic
=== RUN   TestAccECSService_Tags_managed
=== PAUSE TestAccECSService_Tags_managed
=== RUN   TestAccECSService_Tags_UpgradeFromV5_100_0
=== PAUSE TestAccECSService_Tags_UpgradeFromV5_100_0
=== RUN   TestAccECSService_Tags_UpgradeFromV5_100_0ThroughV6_08_0
=== PAUSE TestAccECSService_Tags_UpgradeFromV5_100_0ThroughV6_08_0
=== RUN   TestAccECSService_Tags_propagate
=== PAUSE TestAccECSService_Tags_propagate
=== RUN   TestAccECSService_executeCommand
=== PAUSE TestAccECSService_executeCommand
=== RUN   TestAccECSService_AvailabilityZoneRebalancing
=== PAUSE TestAccECSService_AvailabilityZoneRebalancing
=== CONT  TestAccECSServiceDataSource_basic
=== CONT  TestAccECSService_PlacementConstraints_emptyExpression
=== CONT  TestAccECSService_AvailabilityZoneRebalancing
--- PASS: TestAccECSServiceDataSource_basic (78.19s)
=== CONT  TestAccECSService_executeCommand
--- PASS: TestAccECSService_PlacementConstraints_emptyExpression (78.36s)
=== CONT  TestAccECSService_Tags_propagate
--- PASS: TestAccECSService_AvailabilityZoneRebalancing (81.46s)
=== CONT  TestAccECSService_Tags_UpgradeFromV5_100_0ThroughV6_08_0
--- PASS: TestAccECSService_executeCommand (70.20s)
=== CONT  TestAccECSService_Tags_UpgradeFromV5_100_0
--- PASS: TestAccECSService_Tags_propagate (72.91s)
=== CONT  TestAccECSService_Tags_managed
--- PASS: TestAccECSService_Tags_UpgradeFromV5_100_0ThroughV6_08_0 (116.39s)
=== CONT  TestAccECSService_Tags_basic
--- PASS: TestAccECSService_Tags_managed (67.07s)
=== CONT  TestAccECSService_ServiceConnect_outOfBandRemoval
--- PASS: TestAccECSService_Tags_UpgradeFromV5_100_0 (98.91s)
=== CONT  TestAccECSService_ServiceConnect_remove
--- PASS: TestAccECSService_Tags_basic (72.74s)
=== CONT  TestAccECSService_ServiceConnect_ingressPortOverride
--- PASS: TestAccECSService_ServiceConnect_outOfBandRemoval (157.72s)
=== CONT  TestAccECSService_ServiceConnect_tls_with_empty_timeout
--- PASS: TestAccECSService_ServiceConnect_ingressPortOverride (172.03s)
=== CONT  TestAccECSService_ServiceConnect_full
--- PASS: TestAccECSService_ServiceConnect_remove (209.06s)
=== CONT  TestAccECSService_ServiceConnect_basic
--- PASS: TestAccECSService_ServiceConnect_tls_with_empty_timeout (172.02s)
=== CONT  TestAccECSService_ServiceRegistries_removal
--- PASS: TestAccECSService_ServiceConnect_basic (156.59s)
=== CONT  TestAccECSService_ServiceRegistries_changes
--- PASS: TestAccECSService_ServiceConnect_full (170.92s)
=== CONT  TestAccECSService_ServiceRegistries_container
--- PASS: TestAccECSService_ServiceRegistries_removal (161.76s)
=== CONT  TestAccECSService_ServiceRegistries_basic
--- PASS: TestAccECSService_ServiceRegistries_container (159.05s)
=== CONT  TestAccECSService_replicaSchedulingStrategy
--- PASS: TestAccECSService_replicaSchedulingStrategy (64.18s)
=== CONT  TestAccECSService_DaemonSchedulingStrategy_setDeploymentMinimum
--- PASS: TestAccECSService_ServiceRegistries_changes (242.87s)
=== CONT  TestAccECSService_DaemonSchedulingStrategy_basic
--- PASS: TestAccECSService_ServiceRegistries_basic (147.18s)
=== CONT  TestAccECSService_LaunchTypeFargate_platformVersion
--- PASS: TestAccECSService_DaemonSchedulingStrategy_setDeploymentMinimum (42.90s)
=== CONT  TestAccECSService_LaunchTypeFargate_basic
--- PASS: TestAccECSService_DaemonSchedulingStrategy_basic (35.19s)
=== CONT  TestAccECSService_LaunchTypeEC2_network
--- PASS: TestAccECSService_LaunchTypeEC2_network (64.39s)
=== CONT  TestAccECSService_LaunchTypeFargate_updateWaitForSteadyState
--- PASS: TestAccECSService_LaunchTypeFargate_platformVersion (154.26s)
=== CONT  TestAccECSService_alarmsUpdate
--- PASS: TestAccECSService_LaunchTypeFargate_basic (142.74s)
=== CONT  TestAccECSService_PlacementConstraints_basic
--- PASS: TestAccECSService_alarmsUpdate (87.14s)
=== CONT  TestAccECSService_PlacementStrategy_missing
--- PASS: TestAccECSService_PlacementStrategy_missing (1.02s)
=== CONT  TestAccECSService_PlacementStrategy_basic
--- PASS: TestAccECSService_PlacementConstraints_basic (89.48s)
=== CONT  TestAccECSService_forceNewDeploymentTriggers
--- PASS: TestAccECSService_LaunchTypeFargate_updateWaitForSteadyState (184.71s)
=== CONT  TestAccECSService_forceNewDeployment
--- PASS: TestAccECSService_forceNewDeploymentTriggers (79.65s)
=== CONT  TestAccECSService_multipleTargetGroups
--- PASS: TestAccECSService_PlacementStrategy_basic (105.81s)
=== CONT  TestAccECSService_alb
--- PASS: TestAccECSService_forceNewDeployment (67.81s)
=== CONT  TestAccECSService_clusterName
--- PASS: TestAccECSService_clusterName (74.16s)
=== CONT  TestAccECSService_loadBalancerChanges
--- PASS: TestAccECSService_multipleTargetGroups (287.87s)
=== CONT  TestAccECSService_deploymentCircuitBreaker
--- PASS: TestAccECSService_alb (274.73s)
=== CONT  TestAccECSService_DeploymentValues_minZeroMaxOneHundred
--- PASS: TestAccECSService_deploymentCircuitBreaker (75.95s)
=== CONT  TestAccECSService_DeploymentValues_basic
--- PASS: TestAccECSService_DeploymentValues_minZeroMaxOneHundred (75.50s)
=== CONT  TestAccECSService_DeploymentConfiguration_strategy
--- PASS: TestAccECSService_loadBalancerChanges (286.30s)
=== CONT  TestAccECSService_BlueGreenDeployment_withoutTestListenerRule
--- PASS: TestAccECSService_DeploymentValues_basic (64.67s)
=== CONT  TestAccECSService_LaunchTypeFargate_waitForSteadyState
--- PASS: TestAccECSService_DeploymentConfiguration_strategy (98.60s)
=== CONT  TestAccECSService_BlueGreenDeployment_waitServiceActive
--- PASS: TestAccECSService_LaunchTypeFargate_waitForSteadyState (191.79s)
=== CONT  TestAccECSService_VolumeConfiguration_volumeInitializationRate
--- PASS: TestAccECSService_VolumeConfiguration_volumeInitializationRate (137.38s)
=== CONT  TestAccECSService_BlueGreenDeployment_updateInPlace
--- PASS: TestAccECSService_BlueGreenDeployment_waitServiceActive (959.42s)
=== CONT  TestAccECSService_BlueGreenDeployment_updateFailure
--- PASS: TestAccECSService_BlueGreenDeployment_updateInPlace (1032.94s)
=== CONT  TestAccECSService_alarmsAdd
--- PASS: TestAccECSService_alarmsAdd (75.75s)
=== CONT  TestAccECSService_BlueGreenDeployment_changeStrategy
--- PASS: TestAccECSService_BlueGreenDeployment_withoutTestListenerRule (1824.89s)
=== CONT  TestAccECSService_DeploymentControllerMutability_codeDeployToECS
--- PASS: TestAccECSService_DeploymentControllerMutability_codeDeployToECS (291.54s)
=== CONT  TestAccECSService_BlueGreenDeployment_createFailure
--- PASS: TestAccECSService_BlueGreenDeployment_updateFailure (1111.08s)
=== CONT  TestAccECSService_DeploymentControllerType_external
--- PASS: TestAccECSService_DeploymentControllerType_external (37.67s)
=== CONT  TestAccECSService_BlueGreenDeployment_circuitBreakerRollback
--- PASS: TestAccECSService_BlueGreenDeployment_createFailure (343.82s)
=== CONT  TestAccECSService_DeploymentControllerType_codeDeployUpdateDesiredCountAndHealthCheckGracePeriod
--- PASS: TestAccECSService_DeploymentControllerType_codeDeployUpdateDesiredCountAndHealthCheckGracePeriod (427.96s)
=== CONT  TestAccECSService_BlueGreenDeployment_outOfBandRemoval
--- PASS: TestAccECSService_BlueGreenDeployment_changeStrategy (1994.60s)
=== CONT  TestAccECSService_BlueGreenDeployment_basic
--- PASS: TestAccECSService_BlueGreenDeployment_outOfBandRemoval (980.30s)
=== CONT  TestAccECSService_DeploymentControllerType_codeDeploy
--- PASS: TestAccECSService_DeploymentControllerType_codeDeploy (309.58s)
=== CONT  TestAccECSService_VolumeConfiguration_throughputTypeChange
    service_test.go:641: Step 1/2 error: Check failed: Check 6/7 error: aws_ecs_service.test: Attribute 'volume_configuration.0.managed_ebs_volume.0.throughput' expected "", got "0"
--- FAIL: TestAccECSService_VolumeConfiguration_throughputTypeChange (77.19s)
=== CONT  TestAccECSService_healthCheckGracePeriodSeconds
--- PASS: TestAccECSService_healthCheckGracePeriodSeconds (303.33s)
=== CONT  TestAccECSService_iamRole
--- PASS: TestAccECSService_iamRole (39.80s)
=== CONT  TestAccECSService_familyAndRevision
--- PASS: TestAccECSService_familyAndRevision (77.28s)
=== CONT  TestAccECSService_VolumeConfiguration_update
--- PASS: TestAccECSService_VolumeConfiguration_update (104.70s)
=== CONT  TestAccECSService_LatticeConfigurations
--- PASS: TestAccECSService_BlueGreenDeployment_basic (1407.66s)
=== CONT  TestAccECSService_VolumeConfiguration_basic
--- PASS: TestAccECSService_VolumeConfiguration_basic (67.80s)
=== CONT  TestAccECSService_VolumeConfiguration_tagSpecifications
--- PASS: TestAccECSService_VolumeConfiguration_tagSpecifications (78.16s)
=== CONT  TestAccECSService_CapacityProviderStrategy_basic
--- PASS: TestAccECSService_CapacityProviderStrategy_basic (148.37s)
=== CONT  TestAccECSService_CapacityProviderStrategy_update
--- PASS: TestAccECSService_BlueGreenDeployment_circuitBreakerRollback (3058.46s)
=== CONT  TestAccECSService_PlacementStrategy_unnormalized
--- PASS: TestAccECSService_PlacementStrategy_unnormalized (74.47s)
=== CONT  TestAccECSService_Identity_Basic
--- PASS: TestAccECSService_Identity_Basic (68.29s)
=== CONT  TestAccECSService_Identity_RegionOverride
--- PASS: TestAccECSService_CapacityProviderStrategy_update (238.94s)
=== CONT  TestAccECSService_disappears
--- PASS: TestAccECSService_LatticeConfigurations (789.14s)
=== CONT  TestAccECSService_basic
--- PASS: TestAccECSService_disappears (185.03s)
=== CONT  TestAccECSServiceDataSource_loadBalancer
--- PASS: TestAccECSService_Identity_RegionOverride (253.73s)
=== CONT  TestAccECSService_CapacityProviderStrategy_forceNewDeployment
--- PASS: TestAccECSService_basic (82.74s)
--- PASS: TestAccECSService_CapacityProviderStrategy_forceNewDeployment (73.00s)
--- PASS: TestAccECSServiceDataSource_loadBalancer (321.02s)
FAIL
FAIL    github.com/hashicorp/terraform-provider-aws/internal/service/ecs  7499.673s
?       github.com/hashicorp/terraform-provider-aws/internal/service/ecs/test-fixtures     [no test files]
FAIL
make: *** [testacc] Error 1

@djglaser djglaser requested a review from a team as a code owner August 21, 2025 14:32
Copy link
Contributor

Community Guidelines

This 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

  • Please vote on this Pull Request by adding a 👍 reaction to the original post to help the community and maintainers prioritize it.
  • Please see our prioritization guide for additional information on how the maintainers handle prioritization.
  • Please do not leave +1 or other comments that do not add relevant new information or questions; they generate extra noise for others following the Pull Request and do not help prioritize the request.

Pull Request Authors

  • Review the contribution guide relating to the type of change you are making to ensure all of the necessary steps have been taken.
  • Whether or not the branch has been rebased will not impact prioritization, but doing so is always a welcome surprise.

Copy link
Contributor

github-actions bot commented Aug 21, 2025

✅ Thank you for correcting the previously detected issues! The maintainers appreciate your efforts to make the review process as smooth as possible.

@github-actions github-actions bot added needs-triage Waiting for first response or review from a maintainer. documentation Introduces or discusses updates to documentation. tests PRs: expanded test coverage. Issues: expanded coverage, enhancements to test infrastructure. service/ecs Issues and PRs that pertain to the ecs service. size/XL Managed by automation to categorize the size of a PR. partner Contribution from a partner. labels Aug 21, 2025
@djglaser djglaser changed the title Enable ECS Service Blue/Green deployment graceful termination and read handler changes Enable ECS Service Blue/Green deployment graceful termination and read handler changes [do-not-merge] Aug 21, 2025
@ewbankkit ewbankkit removed the needs-triage Waiting for first response or review from a maintainer. label Aug 21, 2025
@ewbankkit ewbankkit self-assigned this Aug 21, 2025
@github-actions github-actions bot added the prioritized Part of the maintainer teams immediate focus. To be addressed within the current quarter. label Aug 21, 2025
@ewbankkit ewbankkit added the enhancement Requests to existing resources that expand the functionality or scope. label Aug 21, 2025
@djglaser djglaser force-pushed the f-bg-sigint-release branch from e5c8870 to f5d893c Compare August 21, 2025 19:07
Copy link
Contributor

github-actions bot commented Aug 21, 2025

✅ Thank you for correcting the previously detected issues! The maintainers appreciate your efforts to make the review process as smooth as possible.

@djglaser djglaser force-pushed the f-bg-sigint-release branch from f5d893c to e841889 Compare August 21, 2025 19:33
@djglaser djglaser force-pushed the f-bg-sigint-release branch from 8f4effd to 35f4d81 Compare August 26, 2025 19:16
@djglaser djglaser changed the title Enable ECS Service Blue/Green deployment graceful termination and read handler changes Enable ECS Service deployment graceful termination and Blue/Green read handler changes Aug 26, 2025
@djglaser djglaser force-pushed the f-bg-sigint-release branch from dd27500 to c05ab4d Compare August 26, 2025 19:32
Copy link
Contributor

@ewbankkit ewbankkit left a 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_DeploymentConfiguration_\|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.6 test ./internal/service/ecs/... -v -count 1 -parallel 3  -run=TestAccECSService_BlueGreenDeployment_\|TestAccECSService_DeploymentConfiguration_\|TestAccECSService_basic -timeout 360m -vet=off
2025/08/26 17:22:19 Creating Terraform AWS Provider (SDKv2-style)...
2025/08/26 17:22:19 Initializing Terraform AWS Provider (SDKv2-style)...
=== RUN   TestAccECSService_basic
=== PAUSE TestAccECSService_basic
=== RUN   TestAccECSService_BlueGreenDeployment_basic
=== PAUSE TestAccECSService_BlueGreenDeployment_basic
=== RUN   TestAccECSService_BlueGreenDeployment_outOfBandRemoval
=== PAUSE TestAccECSService_BlueGreenDeployment_outOfBandRemoval
=== RUN   TestAccECSService_BlueGreenDeployment_sigintRollback
    service_test.go:1084: SIGINT handling can't reliably be tested in CI
--- SKIP: TestAccECSService_BlueGreenDeployment_sigintRollback (0.00s)
=== 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_updateInPlace
=== PAUSE TestAccECSService_BlueGreenDeployment_updateInPlace
=== RUN   TestAccECSService_BlueGreenDeployment_waitServiceActive
=== PAUSE TestAccECSService_BlueGreenDeployment_waitServiceActive
=== RUN   TestAccECSService_BlueGreenDeployment_withoutTestListenerRule
=== PAUSE TestAccECSService_BlueGreenDeployment_withoutTestListenerRule
=== RUN   TestAccECSService_DeploymentConfiguration_strategy
=== PAUSE TestAccECSService_DeploymentConfiguration_strategy
=== CONT  TestAccECSService_basic
=== CONT  TestAccECSService_BlueGreenDeployment_updateFailure
=== CONT  TestAccECSService_BlueGreenDeployment_circuitBreakerRollback
--- PASS: TestAccECSService_basic (74.06s)
=== CONT  TestAccECSService_BlueGreenDeployment_withoutTestListenerRule
--- PASS: TestAccECSService_BlueGreenDeployment_updateFailure (1099.56s)
=== CONT  TestAccECSService_DeploymentConfiguration_strategy
--- PASS: TestAccECSService_DeploymentConfiguration_strategy (77.54s)
=== CONT  TestAccECSService_BlueGreenDeployment_waitServiceActive
--- PASS: TestAccECSService_BlueGreenDeployment_withoutTestListenerRule (1362.71s)
=== CONT  TestAccECSService_BlueGreenDeployment_updateInPlace
--- PASS: TestAccECSService_BlueGreenDeployment_circuitBreakerRollback (1543.91s)
=== CONT  TestAccECSService_BlueGreenDeployment_outOfBandRemoval
--- PASS: TestAccECSService_BlueGreenDeployment_waitServiceActive (368.59s)
=== CONT  TestAccECSService_BlueGreenDeployment_changeStrategy
--- PASS: TestAccECSService_BlueGreenDeployment_updateInPlace (647.56s)
=== CONT  TestAccECSService_BlueGreenDeployment_createFailure
--- PASS: TestAccECSService_BlueGreenDeployment_outOfBandRemoval (769.23s)
=== CONT  TestAccECSService_BlueGreenDeployment_basic
--- PASS: TestAccECSService_BlueGreenDeployment_createFailure (352.34s)
--- PASS: TestAccECSService_BlueGreenDeployment_changeStrategy (1051.84s)
--- PASS: TestAccECSService_BlueGreenDeployment_basic (466.80s)
PASS
ok  	github.com/hashicorp/terraform-provider-aws/internal/service/ecs	2785.278s
?   	github.com/hashicorp/terraform-provider-aws/internal/service/ecs/test-fixtures	[no test files]
% make testacc TESTARGS='-run=TestAccECSService_BlueGreenDeployment_circuitBreakerRollback' PKG=ecs
make: Verifying source code with gofmt...
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go1.24.6 test ./internal/service/ecs/... -v -count 1 -parallel 20  -run=TestAccECSService_BlueGreenDeployment_circuitBreakerRollback -timeout 360m -vet=off
2025/08/27 10:04:31 Creating Terraform AWS Provider (SDKv2-style)...
2025/08/27 10:04:31 Initializing Terraform AWS Provider (SDKv2-style)...
=== RUN   TestAccECSService_BlueGreenDeployment_circuitBreakerRollback
=== PAUSE TestAccECSService_BlueGreenDeployment_circuitBreakerRollback
=== CONT  TestAccECSService_BlueGreenDeployment_circuitBreakerRollback
--- PASS: TestAccECSService_BlueGreenDeployment_circuitBreakerRollback (3426.10s)
PASS
ok  	github.com/hashicorp/terraform-provider-aws/internal/service/ecs	3431.680s
?   	github.com/hashicorp/terraform-provider-aws/internal/service/ecs/test-fixtures	[no test files]

Copy link
Member

@jar-b jar-b left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🚀

@ewbankkit
Copy link
Contributor

@djglaser Thanks for the contribution 🎉 👏.

@ewbankkit ewbankkit merged commit 032b8fc into hashicorp:main Aug 27, 2025
46 checks passed
Copy link
Contributor

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.

@github-actions github-actions bot added this to the v6.11.0 milestone Aug 27, 2025
@github-actions github-actions bot removed the prioritized Part of the maintainer teams immediate focus. To be addressed within the current quarter. label Aug 28, 2025
Copy link
Contributor

This functionality has been released in v6.11.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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Introduces or discusses updates to documentation. enhancement Requests to existing resources that expand the functionality or scope. partner Contribution from a partner. service/ecs Issues and PRs that pertain to the ecs service. size/XL Managed by automation to categorize the size of a PR. tests PRs: expanded test coverage. Issues: expanded coverage, enhancements to test infrastructure.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants