code: def __init__(
      self,
      settings: Union[Dict, S3StorageDriverSettings],
      client: Optional[boto3.client] = None,
  ):
      if isinstance(settings, dict):
          settings = S3StorageDriverSettings(**settings)
  
      client_configuration = {
          "endpoint_url": settings.s3_endpoint,
          "aws_access_key_id": settings.aws_access_key_id,
          "aws_secret_access_key": settings.aws_secret_access_key,
          "region_name": settings.aws_default_region,
          "aws_session_token": settings.aws_session_token,
      }
      self.aws_kms_key_id = settings.aws_kms_key_id
      super().__init__(
          settings=settings,
          client=client,
          client_configuration=client_configuration,
      )
  
imports: import os
  from typing import Dict, Optional, Union
  import boto3
  import botocore
  import pydantic
  from structlog import get_logger
  from tenacity import retry
  from modelkit.assets import errors
  from modelkit.assets.drivers.abc import StorageDriver, StorageDriverSettings
  from modelkit.assets.drivers.retry import retry_policy
label_desc: Use image node_id 1 to create a new S3StorageDriver object from inherited base classes: StorageDriver with example: obj = S3StorageDriver(settings, client)