in Explode/lambda/explode.py [0:0]
def handle_transform(template):
"""Go through template and explode resources."""
mappings = template['Mappings']
resources = template['Resources']
new_resources = {}
for resource_name, resource in resources.items():
try:
explode_map = resource['ExplodeMap']
del resource['ExplodeMap']
except KeyError:
# This resource does not have an ExplodeMap, so copy it verbatim
# and move on
new_resources[resource_name] = resource
continue
try:
explode_map_data = mappings[explode_map]
except KeyError:
# This resource refers to a mapping entry which doesn't exist, so
# fail
print('Unable to find mapping for exploding resource {}'.format(resource_name))
raise
resource_instances = explode_map_data.keys()
for resource_instance in resource_instances:
new_resource = walk_resource(resource, explode_map_data[resource_instance])
if 'ResourceName' in explode_map_data[resource_instance]:
new_resource_name = explode_map_data[resource_instance]['ResourceName']
else:
new_resource_name = resource_name + resource_instance
new_resources[new_resource_name] = new_resource
template['Resources'] = new_resources
return template