in blogs/ecs-canary-deployments-pipeline/shared_stack/lambda_functions/deploy_canary_infrastructure/main.py [0:0]
def lambda_handler(event, _context):
""" Main handler. """
canary_cfn_template = event['CanaryTemplate']
template_params = {
'EnvironmentName': event['EnvironmentName'],
'MicroserviceName': event['MicroserviceName'],
'Namespace': event['Namespace'],
'Sha': event['Sha'],
'ContainerImage': event['ContainerImage'],
'Port': str(event['Port']),
'Protocol': event['Protocol']
}
stack_name = event['EnvironmentName'] + '-' + event['MicroserviceName'] + '-' +event['Sha']
template = _deserialize_template(canary_cfn_template)
if not _validate_template(template):
return None
cfn_template_params = _generate_params(template_params)
kwargs = {
'StackName': stack_name,
'TemplateBody': template,
'Parameters': cfn_template_params,
}
CFN_CLIENT.create_stack(**kwargs)
LOGGER.info("Waiting for stack to be ready.")
waiter = CFN_CLIENT.get_waiter('stack_create_complete')
waiter.wait(StackName=stack_name)
LOGGER.info("Created Canary stack successfully.")