"""Lambda audience-file-export function module.""" import logging from typing import Any import pydantic from anydi import auto import app from app.exceptions import HandlerError from app.handlers import ExportAudienceFileHandler, ExportAudienceFileRequest from app.schemas import S3Event # Set up the application container = app.setup() # Get the logger logger = logging.getLogger(__name__) @container.inject def handle( event: Any, context: Any, handler: ExportAudienceFileHandler = auto ) -> dict[str, Any]: """Lambda entry point.""" try: s3_event = S3Event.model_validate(event) except pydantic.ValidationError: logger.exception("Invalid payload received") return {"status": "INVALID_EVENT"} try: handler.handle( ExportAudienceFileRequest( bucket=s3_event.records[0].s3.bucket.name, key=s3_event.records[0].s3.object.key, ) ) except HandlerError as exc: logger.exception("Failed to handle event") return {"status": exc.code} return {"status": "OK"}