def lambda_handler()

in code/ct_flowlog_lifecycle.py [0:0]


def lambda_handler(event, context):
    LOGGER.info('Lambda Handler - Start')
    LOGGER.info('REQUEST RECEIVED: {}'.format(json.dumps(event, default=str)))

    # Check if lifecycle even matches
    if 'detail' in event and event['detail']['eventName'] == 'CreateManagedAccount':
        if event['detail']['serviceEventDetails']['createManagedAccountStatus']['state'] == 'SUCCEEDED':
            account_id = event['detail']['serviceEventDetails']['createManagedAccountStatus']['account']['accountId']

            # find if existing stackset instance for this account already exist
            stackset_name = (str(os.environ["stack_set_arn"]).split(":")[5]).split("/")[1]
            stackset_instances = list_stack_instance_by_account(session, stackset_name, account_id)
            stackset_instances_regions = list_stack_instance_region(session, stackset_name)

            # stackset instance does not exist, create a new one
            if len(stackset_instances) == 0:
                create_stack_instance(session, stackset_name, [account_id], stackset_instances_regions)

            # stackset instance already exist, check for missing region
            elif len(stackset_instances) > 0:
                stackset_region = []
                for instance in stackset_instances:
                    stackset_region.append(instance['Region'])
                next_region = list(set(stackset_instances_regions) - set(stackset_region))
                if len(next_region) > 0:
                    create_stack_instance(session, stackset_name, [account_id], next_region)
                else:
                    LOGGER.info("Stackset instance already exist : {}".format(stackset_instances))
        else:
            LOGGER.error("Invalid event state, expected: SUCCEEDED : {}".format(event))
    else:
        LOGGER.error("Invalid event received : {}".format(event))

    LOGGER.info('Lambda Handler - End')