"""Lambda start-sfn-content-match-audio function module.""" from kafka_utils.consumer.deserializer.simple_json import JSONDeserializer from kafka_utils.consumer.source.mapping import EventSourceMessage import sentry_sdk from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration from src import config from src.logic import event_handling from src.logic.event_logger import AssetMezzanineAudioFlacEventLogger from src.logic.event_message import AssetMezzanineAudioFlacEventMessage if config.SENTRY_DSN: sentry_sdk.init( dsn=config.SENTRY_DSN, environment=config.ENVIRONMENT, integrations=[AwsLambdaIntegration(timeout_warning=True)] ) json_deserializer = JSONDeserializer() content_lambda_logger = AssetMezzanineAudioFlacEventLogger(config.app_logger) def process_event(message): """Process event from lambda entry point.""" data = AssetMezzanineAudioFlacEventMessage( message=message.value, topic=message.topic, value_deserializer=json_deserializer ) response = event_handling.trigger_stfn({ 'asset_final_id': data.asset_final_id, 'bucket': data.bucket, 'filename': data.filename, 'duration_ms': data.duration_ms }) content_lambda_logger.set_data( status='success', result=f'Started: {response.get("executionArn")} on asset_final_id {data.asset_final_id}' ) def handler(event, context): """Lambda Entry point.""" msk_message = EventSourceMessage(event) for event_key, message in msk_message: try: content_lambda_logger.start(message, event_key, json_deserializer) process_event(message) except Exception as e: content_lambda_logger.set_data(status='error', result=str(e)) raise e finally: content_lambda_logger.end() return {'status': 'OK'}