docs: def compress_and_upload(data, compressed_file, s3_path, multipart_chunk_size_mb=500,
      method='gz', delete=False, access_key=None, secret_key=None):
      '''
      Compresses data and uploads to S3.
  
      S3 upload uses ``s3cmd``, so you must either:
  
          1) Manually configure ``s3cmd`` prior to use (typically using ``s3cmd --configure``).
  
          2) Configure ``s3cmd`` using ``s3.configure()``.
  
          3) Pass your access key and secret key to ``compress_and_upload``, which will automatically configure s3cmd.
  
      .. note:
  
          ``s3cmd`` configuration only needs to be done once per computer,
          which means that relaunching a cloud instance or Docker image will
          require re-configuration of ``s3cmd``.
  
      Args:
  
          data: Can be one of three things:
  
              1) Path to a single file
  
              2) Path to a directory
  
              3) A list of one or more paths to files or directories
  
          compressed_file (str): Path to the compressed file. Required.
  
          s3_path (str): The S3 path, with the filename omitted. The S3 filename
            will be the basename of the ``compressed_file``. For example::
  
              compress_and_upload(data='/path/to/data',
                                  compressed_file='/path/to/compressed.tar.gz',
                                  s3_path='s3://my_bucket/path/to/')
  
            will result in an uploaded S3 path of ``s3://my_bucket/path/to/compressed.tar.gz``
  
          method (str): Compression method. Options are ``'gz'`` (gzip) or ``'bz2'`` (bzip2).
              Default is ``'gz'``.
  
          delete (bool): If ``True``, the ``compressed_file`` will be deleted after upload
              to S3. Default is ``False``.
  
          access_key (str): AWS access key.
  
          secret_key (str): AWS secret key.
      '''
      logger = log.get_logger('s3')
      if all([access_key, secret_key]):
          configure(access_key=access_key, secret_key=secret_key, logger=logger)
      compress(data, compressed_file, fmt=method, logger=logger)
      put(compressed_file, s3_path, multipart_chunk_size_mb=multipart_chunk_size_mb, logger=logger)
      if delete:
          os.unlink(compressed_file)