""" This lambda invokes when file is created on S3 and it executes batch further batch processing. """ import os from typing import Any, Dict, Optional import boto3 import sentry_sdk from botocore.client import BaseClient from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration from sentry_sdk.utils import BadDsn from sme_logger import get_logger from redis import BlockingConnectionPool, StrictRedis from spotify_charts_notifications.constants import APP_NAME, ENV_PROD from spotify_charts_notifications.handler import handler from spotify_charts_notifications.config import Config sqs_client: Optional[BaseClient] = None config = Config() redis_pool: Optional[BlockingConnectionPool] = None try: sentry_sdk.init(dsn=config.SENTRY_DSN, integrations=[AwsLambdaIntegration()]) except BadDsn: pass def lambda_handler(event, context): environment = os.environ.get('ENVIRONMENT', ENV_PROD).lower() logger = get_logger(APP_NAME, environment) global sqs_client if not sqs_client: sqs_client = boto3.client('sqs') global redis_pool if not redis_pool: redis_pool = BlockingConnectionPool(host=config.REDIS_HOST, port=config.REDIS_PORT) redis_client = StrictRedis(connection_pool=redis_pool) log_context: Dict[str, Any] = {'requestID': context.aws_request_id} logger.debug("Lambda", extra=log_context) return handler(logger, sqs_client, redis_client, config)