in templates/aws-cloudfront-monitoring/source/lambda.d/metric_collector_download_speed_cdn/metric_collector_download_speed_cdn.py [0:0]
def lambda_handler(event, context):
log.info('[lambda_handler] Start')
log.info('[lambda_handler] Event ' + json.dumps(event))
response = {
"isBase64Encoded": "false",
"headers": {
"Content-Type": "application/json"
}
}
event_time = event["time"]
event_datetime = datetime.strptime(event_time, "%Y-%m-%dT%H:%M:%SZ")
start_datetime = event_datetime - timedelta(minutes=20)
start_time = start_datetime.strftime("%Y-%m-%d %H:%M:%S")
end_time = event_datetime.strftime("%Y-%m-%d %H:%M:%S")
domain_list = os.getenv('DOMAIN_LIST').split(",")
metric = "downloadSpeed"
for domain in domain_list:
domain = domain.strip()
try:
gen_data = {}
gen_data = gen_detailed_by_interval(metric, start_time, end_time,
domain)
for data_item in gen_data:
has_value = False
for key in data_item:
if key != "timestamp" and key != "domain":
has_value = True
break
if has_value is True:
table_item = {
'metricId': metric + '-' + domain,
'timestamp': data_item["timestamp"],
'metricData': data_item
}
table = dynamodb.Table(DDB_TABLE_NAME)
ddb_response = table.put_item(Item=table_item)
log.info(str(table_item))
log.info(str(ddb_response))
except Exception as error:
log.error(str(error))
log.info('[lambda_handler] End')
return response