aws-cloudformation / aws-cloudformation/cloudformation-coverage-roadmap
[Enhancement] - Allow stack updates when there are changes to the template that do not affect resources
- Dominant language
- No language data
- Stars
- 1.1k
- Forks
- 62
- PR merge metrics
- No merged PRs in 30d
Description
### 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."
- The name of a parameter is changed without updating its value
~~~~
Parameters:
Example:
Type: String
Updated to
Parameters:
ChangedExample:
Type: String
~~~~
- A conditionally created resource is added to the Resources section that will not be created
~~~~
Conditions:
FalseCondition: !Equals
- 'true'
- 'false'
Resources:
...
ConditionalEmpty:
Condition: FalseCondition
Type: AWS::CloudFormation::WaitConditionHandle
~~~~~
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.
Contributor guide
Research direction
Start by reviewing the UpdateStack and CreateChangeSet API behavior described in this issue, including how template changes are compared when Resources and Outputs are unchanged. Done means a template-only change, such as a renamed parameter or an uncreated conditional resource, can be accepted without an arbitrary resource change, either by default or through the proposed opt-in property.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws
- Domain
- cloud, infrastructure
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100