"""Sentry common functions.""" import sentry_sdk from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration from src.secrets_manager import LambdaAvScanSecretsManager def init(sentry_dsn, environment): """ Initilize sentry_sdk. Args: sentry_dsn (str) environment (str) """ sentry_sdk.init( dsn=sentry_dsn, environment=environment, integrations=[AwsLambdaIntegration()] ) def capture_exception(exception=None): """ Send exception to Sentry. If no exception provided then send current exception from sys.exc_info(). """ sentry_sdk.capture_exception(exception) def capture_message(message): """Send message to Sentry.""" sentry_sdk.capture_message(message) def init_for_lambda(lambda_name, env): """ Initialize sentry for given lambda name. The SENTRY_DSN is taken from secrets manger. Note: It does nothing if run in test environment. """ if env == 'test': return secrets_manager_client = LambdaAvScanSecretsManager(lambda_name=lambda_name, environment=env) init(sentry_dsn=secrets_manager_client.get_cred('SENTRY_DSN'), environment=env)