Skip to content
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

Fix nested parameters with values #30

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

arthurian
Copy link

@arthurian arthurian commented Oct 19, 2021

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

Internal values are represented in the YAML with a parameter name that
is considered invalid by the Parameter Store, so there is no chance of
conflict.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant