def fetch_parameter_store_value()

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