"""Entrypoint for function.""" import boto3 import config import sentry_sdk from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration from src.common import logger from src.common.connectors import s3_assets from src.connectors import ows_sound_recordings from src.services.acr_cloud import ACRCloudClient # 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') ACR_CLOUD_ACCESS_TOKEN = config.secrets_manager_client.get_cred('ACR_CLOUD_ACCESS_TOKEN') # noqa:E501 def handler(event, context): """Entrypoint for function execution.""" try: asset = event['asset'] asset_id = asset['id'] asset_filename = asset['filename'] asset_extension = asset['extension'] acr_client = ACRCloudClient( ACR_CLOUD_ACCESS_TOKEN, config.ACR_CLOUD_URL, max_fingerprint_size=config.ACR_CLOUD_MAX_FINGERPRINT_SIZE ) acr_id = acr_client.upload_fingerprint( config.ACR_CLOUD_BUCKET_ID, asset_id, s3_assets.download_asset( asset_filename, asset_extension ) ) logger.info(f'{asset_id} : {acr_id}') results = ows_sound_recordings.post_acrid(asset_id, acr_id) return { 'track_ids': results } except Exception as e: logger.exception(str(e)) raise e def _read_s3_object(bucket, key): s3_client = boto3.client('s3') s3_response = s3_client.get_object(Bucket=bucket, Key=key) return s3_response['Body'].read()