"""Configuration for 'save VO to DD DB' lambda.""" import os import logging import sys from secrets_manager.lambda_ext import LambdaSecretsManager import sentry_sdk from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration from sentry_sdk.integrations.logging import LoggingIntegration DEV_ENVIRONMENT = 'dev' TEST_ENVIRONMENT = 'test' PROD_ENVIRONMENT = 'prod' QA_ENVIRONMENT = 'qa' ENVIRONMENT = os.environ.get('Environment', DEV_ENVIRONMENT) # Logger configuration. LOGGER_LEVEL = getattr(logging, os.environ.get('LOGGER_LEVEL', 'INFO')) logger = logging.getLogger() logger.setLevel(LOGGER_LEVEL) stream_handler = logging.StreamHandler(sys.stdout) stream_handler.setLevel(logging.DEBUG) logger.addHandler(stream_handler) # Name of script APPLICATION_NAME = 'lambda-vector' LAMBDA_NAME = f'{APPLICATION_NAME}-save-to-dd-db' secrets_manager_client = LambdaSecretsManager( environment=ENVIRONMENT, service_name=LAMBDA_NAME) # direct_delivery database connection setup. DD_MYSQL_USER = secrets_manager_client.get_cred('DD_MYSQL_USER') DD_MYSQL_PASSWORD = secrets_manager_client.get_cred('DD_MYSQL_PASSWORD') DD_MYSQL_HOST = os.environ.get('DD_MYSQL_HOST') DD_MYSQL_PORT = int(os.environ.get('DD_MYSQL_PORT', 3306)) DD_MYSQL_DATABASE = os.environ.get('DD_MYSQL_DATABASE') DD_DB_CREDENTIALS = { 'user': DD_MYSQL_USER, 'password': DD_MYSQL_PASSWORD, 'host': DD_MYSQL_HOST, 'port': DD_MYSQL_PORT, 'database': DD_MYSQL_DATABASE, 'connect_timeout': 15 } DD_DB_CONNECTION_STRING = ( 'mysql+pymysql://{user}:{password}@{host}:{port}/{database}'.format( user=DD_DB_CREDENTIALS.get('user'), password=DD_DB_CREDENTIALS.get('password'), host=DD_DB_CREDENTIALS.get('host'), port=DD_DB_CREDENTIALS.get('port'), database=DD_DB_CREDENTIALS.get('database'))) DD_DB_CONNECT_ARGS = {'charset': 'utf8'} # limit for batch insert not to exceed max_allowed_packet BATCH_WRITE_COUNT_LIMIT = int(os.environ.get( 'BATCH_WRITE_COUNT_LIMIT', 10000)) # Sentry Config SENTRY_DSN = os.environ.get('SENTRY_DSN') or None if SENTRY_DSN: sentry_sdk.init( dsn=SENTRY_DSN, environment=ENVIRONMENT, integrations=[ LoggingIntegration( level=LOGGER_LEVEL, event_level=None # Don't send error log as sentry event. ), AwsLambdaIntegration() ])