def METHOD_NAME(self, course_id, file_path, s3_bucket):
    """
    Upload a file.
    Args:
        course_id (unicode): The ID of the course.
        file_path (unicode): Absolute path to the file to upload.
        s3_bucket (unicode): Name of the S3 bucket where the file will be uploaded.
    Returns:
        str: URL to access the uploaded archive.
    """
    conn = _connect_to_s3()
    key_name = os.path.join(course_id, os.path.split(file_path)[1])
    with open(file_path, "rb") as f:
        conn.put_object(
            Bucket=s3_bucket,
            Key=key_name,
            Body=f.read()
        )
    url = conn.generate_presigned_url(
        "get_object",
        Params={
            "Bucket": s3_bucket,
            "Key": key_name,
        },
        ExpiresIn=self.URL_EXPIRATION_HOURS * 3600
    )
    # Store the key and url in the history
    self._history.append({'key': key_name, 'url': url})
    return url