def create_resource()

in lex_exporter/create_lex_template.py [0:0]


def create_resource(resource_type,
                    lex_list_function,
                    lex_get_details_function,
                    lex_type,
                    service_token,
                    name_contains,
                    dependent_resources=[]):
    marker = None
    iterator = lex_list_function(nameContains=name_contains, PaginationConfig={
        'MaxItems': 1000,
        'PageSize': 10,
        'StartingToken': marker
    })
    

    suffix = resource_type.split("::")[1]
    created_resources = []
    for type in iterator:
        types = type[lex_type]
        for resource in types:
            type_definition = lex_get_details_function(name=resource["name"])
            type_definition["createVersion"] = True
            resource_name = re.sub(r'[\W_]+', '', resource["name"])+suffix
            print(f"Creating Resource "+ resource_name)
            created_resources.append(resource_name)
            template["Resources"].update(
                {resource_name: {
                    "Type": resource_type,
                    "Properties": {
                        "ServiceToken": {"Fn::ImportValue": service_token}
                    }
                }})
            excluded_properties = ["ResponseMetadata", "lastUpdatedDate", "createdDate", "checksum", "version", "status"]
            keys_to_add = list(type_definition.keys() - set(excluded_properties))

            properties_to_add = list(map(lambda x: {x: type_definition[x]}, keys_to_add))
            template["Resources"][resource_name]["Properties"].update(reduce(lambda a, b: dict(a, **b), properties_to_add))
            if len(created_resources) != 0:
                template["Resources"][resource_name]["DependsOn"] = list(set(dependent_resources) - set([resource_name]))
            dependent_resources.append(resource_name)  # Hopefully prevents throttling by limiting the number of parallel requests
    return created_resources