ssm-diff
ssm-diff copied to clipboard
Fix nested parameters with values
This PR fixes an issue related to #28 so that it's possible to pull parameters that have values anywhere along the path. Currently, an error is raised if a parameter has a value and then that parameter participates in a longer path.
Given these remote parameters:
/qa/ci = ci_value
/qa/ci/api = api_value
/qa/ci/api/db_schema = schema_value
/qa/ci/api/db_user = user_value
The YAML representation would look like this:
qa:
ci:
'@value': ci_value
api:
'@value': api_value
db_schema: schema_value
db_user: user_value
Since the @
character is not allowed in parameter names, @value
is used as the mapping key for intermediate path values (must be quoted). There should be no conflict with remote parameters and any attempt to update a remote parameter would result in an error.
To apply changes, simply treat @value
as any other key and then run ssm-diff plan
and ssm-diff apply
. For example, changing the YAML to this:
qa:
ci:
api:
'@value': api_value_changed
db_schema: schema_value
db_user: user_value
Would result in the following plan to remove /qa/ci
and update /qa/ci/api
:
- /qa/ci
~ /qa/ci/api:
< api_value
> api_value_changed
@runtheops