code: def __init__(
      self,
      storage_config: Dict[str, Any],
      storage_paths: List[str],
      local_dir: str,
  ) -> None:
      import boto3
  
      from determined.common.storage import boto3_credential_manager
  
      boto3_credential_manager.initialize_boto3_credential_providers()
      self.s3 = boto3.resource(
          "s3",
          endpoint_url=storage_config.get("endpoint_url"),
          aws_access_key_id=storage_config.get("access_key"),
          aws_secret_access_key=storage_config.get("secret_key"),
      )
      self.client = self.s3.meta.client
      self.bucket_name = str(storage_config["bucket"])
  
      self.local_dir = local_dir
      self.storage_paths = storage_paths
      self._file_records = {}
  
file_path: determined/harness/determined/tensorboard/fetchers/s3.py
imports: import datetime
  import logging
  import os
  import urllib.parse
  from typing import Any, Callable, Dict, Generator, List
  from .base import Fetcher
label_desc: Use image node_id 1 to create a new S3Fetcher object from inherited base classes: Fetcher with example: obj = S3Fetcher(storage_config, storage_paths, local_dir)