I spent a couple of hours yesterday trying to deploy a parent stack with two nested dynamodb table stacks. Both stacks were to be built from the same template and so provided a TableName parameter for the general purpose child stack to use along with its standard settings. This is one of the primary use cases for child stacks.

It didn’t work, and looking at #1921 it appears that the code treats the child stack as though it should just run independently.

I suspect that #2079 needs the obverse of this, which is the collection of outputs from a child to use with a peer.

return o if o is None else json.dumps(o) if isinstance(o, (dict, list)) else str(o)
def select_attributes(obj, attrs):
    result = {}
    for attr in attrs:
        if obj.get(attr) is not None:
            result[attr] = str_or_none(obj.get(attr))
    return result
def get_bucket_location_config(**kwargs):
    return {'LocationConstraint': aws_stack.get_region()}
def lambda_get_params():
    return lambda params, **kwargs: params
def rename_params(func, rename_map):
    def do_rename(params, **kwargs):
        values = func(params, **kwargs) if func else params
        for old_param, new_param in rename_map.items():
            values[new_param] = values.pop(old_param, None)
        return values
    return do_rename
def params_list_to_dict(param_name, key_attr_name, value_attr_name):
    def do_replace(params, **kwargs):
        result = {}
        for entry in params.get(param_name, []):
            key = entry[key_attr_name]
            value = entry[value_attr_name]
            result[key] = value
        return result
    return do_replace
def get_nested_stack_name(params, **kwargs):