SSM parameters in cloudformation (AWS::SSM::Parameter::) are not recognized and resolved (#3929)
* Add ssm parsing support for cloudformation stacks * Start adding unit tests for ssm parameter parsing * Add tests for code update * Add tests to parse ssm parameters code * Fix black lint errors * Fix bug. * Need to specify region_name * region needs to be same * Use ssm_backends[region] instead of ssm_backend * StringList -> string * Linting * check if servermode tests are on * Typo Co-authored-by: Bert Blommers <bblommers@users.noreply.github.com>
This commit is contained in:
parent
4ad6c3932e
commit
24fa8f25a1
2 changed files with 57 additions and 0 deletions
|
|
@ -41,6 +41,7 @@ from moto.sagemaker import models as sagemaker_models # noqa
|
|||
from moto.sns import models as sns_models # noqa
|
||||
from moto.sqs import models as sqs_models # noqa
|
||||
from moto.stepfunctions import models as stepfunctions_models # noqa
|
||||
from moto.ssm import models as ssm_models, ssm_backends # noqa
|
||||
|
||||
# End ugly list of imports
|
||||
|
||||
|
|
@ -516,6 +517,23 @@ class ResourceMap(collections_abc.Mapping):
|
|||
parameter_slot = parameter_slots[key]
|
||||
|
||||
value_type = parameter_slot.get("Type", "String")
|
||||
|
||||
def _parse_ssm_parameter(value, value_type):
|
||||
# The Value in SSM parameters is the SSM parameter path
|
||||
# we need to use ssm_backend to retreive the
|
||||
# actual value from parameter store
|
||||
parameter = ssm_backends[self._region_name].get_parameter(
|
||||
value, False
|
||||
)
|
||||
actual_value = parameter.value
|
||||
|
||||
if value_type.find("List") > 0:
|
||||
return actual_value.split(",")
|
||||
|
||||
return actual_value
|
||||
|
||||
if value_type.startswith("AWS::SSM::Parameter::"):
|
||||
value = _parse_ssm_parameter(value, value_type)
|
||||
if value_type == "CommaDelimitedList" or value_type.startswith("List"):
|
||||
value = value.split(",")
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue