import boto3 from botocore.exceptions import NoCredentialsError, PartialCredentialsError from config import logger class S3Client: def __init__(self, bucket_name, upload_folder): try: self.s3 = boto3.client('s3') self.bucket_name = bucket_name self.upload_folder = upload_folder except (NoCredentialsError, PartialCredentialsError) as e: logger.error(f"Error creating S3 client: {e}") raise def upload_to_s3(self, filename, data): try: self.s3.put_object(Body=data, Bucket=self.bucket_name, Key=self.upload_folder + filename) logger.info(f"{filename} uploaded to S3 successfully.") except Exception as e: logger.error(f"Error uploading {filename} to S3: {e}") raise