code: def download(self, source: str, target: str):
      # Attention: Only works for single files at the moment
      remote_upload_to = self._generate_tmp_cloud_storage_path()
      # remote source -> s3
      bucket_address = f"s3://{self.bucket}/{remote_upload_to}"
      retcode, _ = self._run_with_retry(
          lambda: self.job_manager.run_and_wait(
              (
                  f"pip install -q awscli && "
                  f"aws s3 cp {source} {bucket_address} "
                  "--acl bucket-owner-full-control"
              ),
              {},
          )
      )
  
      if retcode != 0:
          raise FileDownloadError(
              f"Error downloading file {source} to {target}"
          )
  
      self.download_from_cloud(
          remote_upload_to, target, delete_after_download=True
      )
  
imports: import os
  import shutil
  import sys
  import tempfile
  from typing import Optional
  import boto3
  from google.cloud import storage
  from ray_release.aws import RELEASE_AWS_BUCKET
  from ray_release.cluster_manager.cluster_manager import ClusterManager
  from ray_release.exception import FileDownloadError, FileUploadError
  from ray_release.file_manager.file_manager import FileManager
  from ray_release.job_manager import JobManager
  from ray_release.logger import logger
  from ray_release.util import exponential_backoff_retry, generate_tmp_cloud_storage_path, S3_CLOUD_STORAGE, GS_CLOUD_STORAGE, GS_BUCKET
label_desc: Use image node_id 5 for calling the JobFileManager obj's underlying member method code with example usage: obj.download(source, target) without return types