<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def upload(config):
 """Upload the build documentation site to LSST the Docs. Parameters config : `lander.config.Configuration` Site configuration, which includes upload information and credentials. """

    token = get_keeper_token(config['keeper_url'],
                             config['keeper_user'],
                             config['keeper_password'])
    build_resource = register_build(config, token)

    ltdconveyor.upload_dir(
        build_resource['bucket_name'],
        build_resource['bucket_root_dir'],
        config['build_dir'],
        aws_access_key_id=config['aws_id'],
        aws_secret_access_key=config['aws_secret'],
        surrogate_key=build_resource['surrogate_key'],
        cache_control='max-age=31536000',
        surrogate_control=None,
        upload_dir_redirect_objects=True)

    confirm_build(config, token, build_resource)