def create_database()

in functions/source/create-db/createdb.py [0:0]


def create_database(event, context):
    props = event['ResourceProperties']
    logger.info('Got event: %s' % event)
    try:
        db_name = check_props(props, 'DBName')
        db_user = check_props(props, 'DBUser')
        db_password = check_props(props, 'DBPassword')
        db_host = check_props(props, 'DBHost')
        if 'PhysicalResourceId' in event:
            physical_resource_id = event['PhysicalResourceId']
        else:
            physical_resource_id = "%s_%s" % (db_host, db_name)
    except Exception as e:
        return fail(str(e), physical_resource_id="parameters-not-set")
    
    logger.info("Pre-connect to %s via Psycopg2" % db_host)
    conn = None
    cursor = None
    try:
        conn = psycopg2.connect(database='postgres', user=db_user, host=db_host, password=db_password)
        logger.info("Connected to Database %s" % db_host)
    except Exception as e:
        return fail('Could not connect to the Postgres DB: %s' % str(e))
    else:
        try:
            conn.set_session(autocommit=True)
            cursor = conn.cursor()
            logger.info("Creating database %s on %s" % (db_name, db_host))
            cursor.execute("CREATE DATABASE %s WITH OWNER %s" % (db_name, db_user))
            logger.info("Database created")
        except Exception as e:
            return fail(str(e))
    finally:
        if cursor:
            cursor.close()
        if conn:
            conn.close()
    logger.info("Done!")
    return {
        'Status': 'SUCCESS',
        'PhysicalResourceId': physical_resource_id,
        'Reason': 'Successfully created database %s' % db_name
    }