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