aws-cloudformation / cloudformation-coverage-roadmap

The AWS CloudFormation Public Coverage Roadmap
https://aws.amazon.com/cloudformation/
Creative Commons Attribution Share Alike 4.0 International
1.1k stars 53 forks source link

[Enhancement] - Allow stack updates when there are changes to the template that do not affect resources #2027

Open awsdiegorad opened 2 months ago

awsdiegorad commented 2 months ago

Name of the resource

Other

Resource name

No response

Description

Currently, the UpdateStack API (and CreateChangeSet) API will fail with an error stating that "The submitted information didn't contain changes." if the template provided does not update the property values of existing resources in the Resources or Outputs section of the stack.

Examples of template updates that would fail with "The submitted information didn't contain changes."

Updated to

Parameters: ChangedExample: Type: String

- A conditionally created resource is added to the Resources section that will not be created

Conditions: FalseCondition: !Equals

There are valid use cases where a user would want to update the contents of a CloudFormation template without updating the resources managed by the template. For example, you may want to deploy the same template with a new conditionally created resource to multiple AWS environments, however if the new resource is not created on some environments, you would not be able to use the updated template without implementing an arbitrary change, this would result in the templates deployed to the different environments being out of sync. A user may also want to update the parameter names of their template to adhere to standardized naming conventions.

Request: UpdateStack/CreateChageSet API's should allow stacks to be updated if there are any changes to a template, not just changes that would modify/create new resources or outputs.

Other Details

As an alternate implementation to this request, a new API property could be added to the UpdateStack/CreateChangeSet API that would allow a user to opt into this behavior. For example, a boolean property called "ForceTemplateUpdate" could force this behavior when set to true.