import boto3 from werkzeug.utils import secure_filename from core_notifications.logs import logger from core_notifications.settings import Settings from .either import Right, Left s3_resource = boto3.resource("s3") def upload_file_to_s3(file): filename = secure_filename(file.filename) try: bucket = s3_resource.Bucket(Settings.MEDIA_BUCKET_NAME) bucket.Object(f"{Settings.MEDIA_BUCKET_PATH}{filename}").put( Body=file, ContentType=file.content_type ) except Exception as e: logger.bind(error=e).error("Failed uploading image to S3") return Left(e) return Right(filename)