def lambda_handler()

in sample-apps/data-processor/function/lambda_function.py [0:0]


def lambda_handler(event, context):
    """
    Process AWS Lambda events to generate reports.

    :param event: The Lambda invocation payload, a JSON document with parameters.
    :param context: Details about the Lambda runtime environment
    :return: returns the location of a report in Amazon S3
    """
    logger.info('## ENVIRONMENT VARIABLES')
    logger.info(jsonpickle.encode(dict(**os.environ)))
    logger.info('## EVENT')
    logger.info(jsonpickle.encode(event))
    logger.info('## CONTEXT')
    logger.info(jsonpickle.encode(context))
    # read parameters from invocation event
    service = event.get('service','kms')
    start_date = pd.to_datetime(event.get('start_date'),utc=True)
    end_date = pd.to_datetime(event.get('end_date'),utc=True)
    backfill = event.get('backfill')
    # backfill: set range to last 2 weeks
    if backfill:
        end_date = pd.Timestamp.utcnow().floor('1H')
        start_date = end_date - timedelta(days=14)
    # process specified date range or backfill range
    if start_date and end_date:
        result = '503 internal error'
        for hour in date_range(start_date, end_date):
            end_time = hour.floor('1H')
            logger.info('Processing {}'.format(end_time))
            result = process_events(end_time, service)
            time.sleep(ct_throttle_sleep)
        return result
    # end_date only: process one specific interval
    if end_date:
        end_time = end_date.floor('1H')
        result = process_events(end_time, service)
        return result
    # default: process most recent interval
    end_time = pd.Timestamp.utcnow().floor('1H')
    result = process_events(end_time, service)
    return result