from typing import Any import boto3 from audience_common.aws.utils import get_default_session from campaigns.utils.asyncio import run_async class S3Client: def __init__(self, region_name: str, session: boto3.Session | None = None): session = session or get_default_session() self.client = session.client("s3", region_name=region_name) async def delete_object(self, bucket: str, key: str) -> None: await run_async(self.client.delete_object, Bucket=bucket, Key=key) async def put_object( self, bucket: str, key: str, content: bytes, content_type: str | None = None, ) -> None: kwargs: dict[str, Any] = {"Bucket": bucket, "Key": key, "Body": content} if content_type: kwargs["ContentType"] = content_type await run_async(self.client.put_object, **kwargs)