def lambda_handler()

in templates/aws-cloudfront-monitoring/source/lambda.d/metric_collector_download_speed_origin/metric_collector_download_speed_origin.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 = "downloadSpeedOrigin"

    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