"""Main Handler.""" from datetime import datetime import uuid from bulk_metadata_ingester_common.utils.logging import get_current_logger import config from config import secrets_manager_client from constants import queries from ddex_ingester_common.helpers.rds import run_rds_query def handler(event, context): """Lambda Entrypoint.""" delivered_time = event.get('detail', {}).get('eventTime', {}) event_request_params = event.get('detail', {}).get('requestParameters', {}) delivery_bucket = event_request_params.get('bucketName') delivery_key = event_request_params.get('key') correlation_id = event.get('correlation_id') or str(uuid.uuid4()) # TODO: We need to pick a magic number and consider putting this in common repo # noqa: E501 # See https://github.com/theorchard/lambda-ddex-ingester-common/blob/master/ddex_ingester_common/constants/catalog_ingestion.py#L6 # noqa: E501 provider_source_id = 3 logger = get_current_logger( config.ENVIRONMENT, config.LAMBDA_NAME, logging_level=config.LOGGING_LEVEL, correlation_id=correlation_id) logger.info(f'Lambda triggered with event {event} and context {context}') if not delivery_bucket or not delivery_key: logger.error('Missing request parameter') return # Check event key is for a CSV or XLSX file if not delivery_key.endswith('.csv') and not delivery_key.endswith('.xlsx'): # noqa: E501 logger.error('Delivered file is not of type CSV or XLSX') return if not delivered_time: # Turn 2021-09-14 13:01:14.524565 into 2021-09-09T13:39:00Z delivered_time = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S') + 'Z' logger.debug(f'Missing event time, defaulting to: {delivered_time}') logger.info( f'Execution data: ' f'time - {delivered_time} | ' f'bucket - {delivery_bucket} | ' f'key - {delivery_key}') query_args = ( provider_source_id, delivery_bucket, delivery_key, queries.INGEST_READY_STATUS ) run_rds_query( logger, config.RDS_HOST, config.RDS_DB_NAME, config.RDS_RW_USER, secrets_manager_client.get_cred('rds_read_write_password'), queries.INSERT_QUERY, query_args, ) return event