"""Lambda sr-create function module.""" import sentry_sdk from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration from .common import logger from .connectors import ows_sound_recordings import config # initialize sentry 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 get_sound_recording_ids_from_track_ids(track_ids): """Get sound recording ids from track list. Args: track_ids [int]: Track ids Returns: [str]: OSR ids from tracks """ results = set() for track_id in track_ids: osr_id = ows_sound_recordings.post_sound_recording(int(track_id)) if osr_id: results.add(osr_id) return sorted(list(results)) def handler(event, context): """Lambda entry point.""" try: track_ids = event.get('track_ids') label = event.get('label') entity_id = event.get('id') if track_ids is not None: # If track_id directly in event: Previous step is ACRFingerprinter osr_ids = get_sound_recording_ids_from_track_ids(track_ids) elif label == 'Track': osr_ids = get_sound_recording_ids_from_track_ids([entity_id]) else: raise Exception('Unrecognized event') return {'sound_recording_ids': osr_ids if osr_ids else []} # unexpected: log and raise, sfn should fail except Exception as e: logger.exception(str(e)) raise e