def lambda_handler()

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.")