"""Lambda sr-delivery-tiktok-ack-processor function module.""" import os import sentry_sdk from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration import config from .common import logger from .common.ack_processor.processor import process from .common.ack_processor.connectors import snowflake as snowflake_ack from .connectors.s3 import S3 # initialize sentry sentry_dsn = os.environ.get( 'SENTRY_DSN', config.secrets_manager_client.get_cred('SENTRY_DSN')) if sentry_dsn: logger.info('Initializing with sentry') sentry_sdk.init( sentry_dsn, integrations=[AwsLambdaIntegration()] ) else: logger.info('Initializing without sentry') def handler(raw_events, context, dependencies=None): """Lambda entry point.""" try: ack_storage = dependencies['ack_storage'] if dependencies and 'ack_storage' in dependencies else S3() unacked_deliveries = dependencies['awaited_deliveries'] if dependencies and 'awaited_deliveries' in dependencies else snowflake_ack.mark_unacked_as_awaited() # noqa: E501 awaited_as_success_resolver = dependencies['awaited_resolver'] if dependencies and 'awaited_resolver' in dependencies else snowflake_ack.resolve_awaited_as_success # noqa: E501 awaited_as_error_resolver = dependencies['awaited_resolver'] if dependencies and 'awaited_resolver' in dependencies else snowflake_ack.resolve_awaited_as_error # noqa: E501 awaited_as_missing_resolver = dependencies['awaited_as_missing_resolver'] if dependencies and 'awaited_as_missing_resolver' in dependencies else snowflake_ack.resolve_awaited_as_missing # noqa: E501 show_data = dependencies['show_data'] if dependencies and 'show_data' in dependencies else False return process( ack_storage, unacked_deliveries, awaited_as_success_resolver, awaited_as_error_resolver, awaited_as_missing_resolver, show_data ) except Exception as e: logger.exception(str(e)) raise e