in functions/simple/simple.py [0:0]
def handler(event, context):
init()
validate_input(event)
func_name = event['function-name']
version = event['new-version']
alias_name = event['alias-name']
steps = event['steps']
interval = event['interval']
weight_function = event.get('type', 'linear')
health_check = event.get('health-check', True)
weights = generate_weights(weight_function, steps)
start_time = time.time()
log.info("Calculated alias weight progression: {0}".format(weights))
for weight in weights:
update_weight(func_name, alias_name, version, weight)
sleep(interval)
if health_check:
success = do_health_check(func_name, alias_name, version)
if not success:
rollback(func_name, alias_name)
raise Exception("Health check failed, exiting")
res = finalize(func_name, alias_name, version)
end_time = time.time()
log.info("Alias {0}:{1} is now routing 100% of traffic to version {2}".format(func_name, alias_name, version))
log.info("Finished after {0}s".format(round(end_time - start_time, 2)))
return res