in src/lambda_codebase/initial_commit/bootstrap_repository/adf-build/shared/resolver.py [0:0]
def fetch_parameter_store_value(self, value, key, optional=False): # pylint: disable=too-many-statements
if self._is_optional(value):
LOGGER.info("Parameter %s is considered optional", value)
optional = True
if str(value).count(':') > 1:
[_, region, value] = value.split(':')
else:
[_, value] = value.split(':')
region = DEFAULT_REGION
value = value[:-1] if optional else value
client = ParameterStore(region, boto3)
try:
parameter = self.cache.check(f'{region}/{value}') or client.fetch_parameter(value)
except ParameterNotFoundError:
if optional:
LOGGER.info("Parameter %s not found, returning empty string", value)
parameter = ""
else:
raise
try:
parent_key = list(Resolver.determine_parent_key(self.comparison_parameters, key))[0]
if parameter:
self.cache.add(f'{region}/{value}', parameter)
self.stage_parameters[parent_key][key] = parameter
except IndexError as error:
if parameter:
if self.stage_parameters.get(key):
self.stage_parameters[key] = parameter
else:
LOGGER.error("Parameter was not found, unable to fetch it from parameter store")
raise Exception("Parameter was not found, unable to fetch it from parameter store") from error
return True