in templates/aws-cloudfront-monitoring/source/lambda.d/metric_collector_chr_bandwidth/metric_collector_chr_bandwidth.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 = "chrBandWith"
for domain in domain_list:
domain = domain.strip()
try:
gen_data = {}
gen_data = gen_detailed_by_interval(metric, start_time, end_time,
domain, athena_client, DB_NAME,
GLUE_TABLE_NAME, ATHENA_QUERY_OUTPUT)
for queryItem in gen_data['Detail']:
log.info(json.dumps(queryItem))
log.info(queryItem['QueryId'])
log.info(queryItem['Time'])
item_query_result = get_athena_query_result(
athena_client, queryItem['QueryId'])
item_query_value = 0
if item_query_result['ResultSet']['Rows'][1]['Data'][0].get(
'VarCharValue') != None:
item_query_value = item_query_result['ResultSet']['Rows'][1][
'Data'][0]['VarCharValue']
table_item = {
'metricId': metric + '-' + domain,
'timestamp': queryItem['Time'],
'metricData': item_query_value
}
table = dynamodb.Table(DDB_TABLE_NAME)
ddb_response = table.put_item(Item=table_item)
log.info(json.dumps(table_item))
log.info(str(ddb_response))
except Exception as error:
log.error(str(error))
log.info('[lambda_handler] End')
return response