"""Sentry common functions.""" from secrets_manager.lambda_ext import LambdaSecretsManager import sentry_sdk from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration def init(sentry_dsn, environment): """Initialize 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' or env == 'dev': return secrets_manager_client = LambdaSecretsManager( service_name=lambda_name, environment=env) init( sentry_dsn=secrets_manager_client.get_cred('SENTRY_DSN'), environment=env)