"""Throttler Lambda ready deliveries module.""" import json import os import boto3 import config from src.logger import get_current_logger from vector_utils import queries from vector_utils.datadog.metrics import call_datadog_with_metric class InvocationContext: """This is for passing around the invoke context to logger.""" correlation_id = None def handler(event, context): """Entrypoint to Lambda function. Args: event (optional): AWS Lambda event dependent structure with metadata. context (LambdaContext): AWS Lambda context. """ InvocationContext.correlation_id = context.aws_request_id log = get_current_logger(InvocationContext.correlation_id) log.info('Running "{}"'.format(config.LAMBDA_NAME)) lambda_client = boto3.client('lambda', region_name='us-east-1') dms_ids = get_dms_ids() for row in dms_ids: dms_id = row['dms_master_master_id'] for order_type in row['order_types']: if order_type['count_encoded'] == 0: continue payload = json.dumps({ 'dms_id': int(dms_id), 'batch_delivery': order_type['batch_delivery'], 'order_type': order_type['order_type'], 'third_party_credential_set_id': order_type['third_party_credential_set_id'] }) lambda_client.invoke( FunctionName=os.environ.get('READY_DELIVERIES_LAMBDA_NAME'), InvocationType='Event', LogType='None', Payload=payload.encode() ) log.info( 'Invoked order type: "{}" dms_id: "{}"'.format(order_type['order_type'], dms_id)) call_datadog_with_metric( 'ready_deliveries_manager.run', [ f'environment:{config.ENVIRONMENT}' ], api_key=config.DATADOG_API_KEY, app_key=config.DATADOG_APP_KEY ) log.info('Finished "{}"'.format(config.LAMBDA_NAME)) def get_dms_ids(): """Get dms ids as a list. Returns: list """ return queries.get_active_delivery_stores( conn_info=config.DD_MYSQL_CONN_INFO) if __name__ == '__main__': handler(None, None)