templates/aws-cloudfront-monitoring/source/lambda.d/metric_collector_download_speed_cdn/metric_collector_download_speed_cdn.py [125:217]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        query_result = get_athena_query_result(athena_client, item['QueryId'])
        log.info(json.dumps(query_result))
        speed_item["timestamp"] = str(int(format_date_time(item['end'])))

        for row in query_result['ResultSet']['Rows']:
            if row['Data'][0]['VarCharValue'] != "speed":
                row_speed = row['Data'][0]['VarCharValue']
                row_country = row['Data'][1]['VarCharValue']
                row_isp = row['Data'][2]['VarCharValue']

                if row_country not in speed_item:
                    isp_json = {
                        "250K": 0,
                        "500K": 0,
                        "750K": 0,
                        "1M": 0,
                        "2M": 0,
                        "3M": 0,
                        "4M": 0,
                        "Other": 0
                    }
                    country_json = {}
                    isp_json = count_by_speed(row_speed, isp_json)
                    country_json[row_isp] = isp_json
                    speed_item[row_country] = country_json
                else:
                    if row_isp not in speed_item[row_country]:
                        isp_json = {
                            "250K": 0,
                            "500K": 0,
                            "750K": 0,
                            "1M": 0,
                            "2M": 0,
                            "3M": 0,
                            "4M": 0,
                            "Other": 0
                        }
                        isp_json = count_by_speed(row_speed, isp_json)
                        speed_item[row_country][row_isp] = isp_json
                    else:
                        speed_item[row_country][row_isp] = count_by_speed(
                            row_speed, speed_item[row_country][row_isp])

        for value in speed_item:
            if value != "domain" and value != "timestamp":
                for isp_item in speed_item[value]:
                    temp = speed_item[value][isp_item]
                    total = temp["250K"] + temp["500K"] + temp["750K"] + temp[
                        "1M"] + temp["2M"] + temp["3M"] + temp["4M"] + temp[
                            "Other"]
                    speed_item[value][isp_item]["250K"] = Decimal(
                        temp["250K"] / total).quantize(Decimal('0.00'))
                    speed_item[value][isp_item]["500K"] = Decimal(
                        temp["500K"] / total).quantize(Decimal('0.00'))
                    speed_item[value][isp_item]["750K"] = Decimal(
                        temp["750K"] / total).quantize(Decimal('0.00'))
                    speed_item[value][isp_item]["1M"] = Decimal(
                        temp["1M"] / total).quantize(Decimal('0.00'))
                    speed_item[value][isp_item]["2M"] = Decimal(
                        temp["2M"] / total).quantize(Decimal('0.00'))
                    speed_item[value][isp_item]["3M"] = Decimal(
                        temp["3M"] / total).quantize(Decimal('0.00'))
                    speed_item[value][isp_item]["4M"] = Decimal(
                        temp["4M"] / total).quantize(Decimal('0.00'))
                    speed_item[value][isp_item]["Other"] = Decimal(
                        temp["Other"] / total).quantize(Decimal('0.00'))

        detailed_data.append(speed_item)

    log.info("[gen_detailed_by_interval] Generated data: ")
    log.info(str(detailed_data))

    return detailed_data


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(",")
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



templates/aws-cloudfront-monitoring/source/lambda.d/metric_collector_download_speed_origin/metric_collector_download_speed_origin.py [122:213]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        query_result = get_athena_query_result(athena_client, item['QueryId'])
        log.info(json.dumps(query_result))
        speed_item["timestamp"] = str(int(format_date_time(item['end'])))

        for row in query_result['ResultSet']['Rows']:
            if row['Data'][0]['VarCharValue'] != "speed":
                row_speed = row['Data'][0]['VarCharValue']
                row_country = row['Data'][1]['VarCharValue']
                row_isp = row['Data'][2]['VarCharValue']

                if row_country not in speed_item:
                    isp_json = {
                        "250K": 0,
                        "500K": 0,
                        "750K": 0,
                        "1M": 0,
                        "2M": 0,
                        "3M": 0,
                        "4M": 0,
                        "Other": 0
                    }
                    country_json = {}
                    isp_json = count_by_speed(row_speed, isp_json)
                    country_json[row_isp] = isp_json
                    speed_item[row_country] = country_json
                else:
                    if row_isp not in speed_item[row_country]:
                        isp_json = {
                            "250K": 0,
                            "500K": 0,
                            "750K": 0,
                            "1M": 0,
                            "2M": 0,
                            "3M": 0,
                            "4M": 0,
                            "Other": 0
                        }
                        isp_json = count_by_speed(row_speed, isp_json)
                        speed_item[row_country][row_isp] = isp_json
                    else:
                        speed_item[row_country][row_isp] = count_by_speed(
                            row_speed, speed_item[row_country][row_isp])

        for value in speed_item:
            if value != "domain" and value != "timestamp":
                for isp_item in speed_item[value]:
                    temp = speed_item[value][isp_item]
                    total = temp["250K"] + temp["500K"] + temp["750K"] + temp[
                        "1M"] + temp["2M"] + temp["3M"] + temp["4M"] + temp[
                            "Other"]
                    speed_item[value][isp_item]["250K"] = Decimal(
                        temp["250K"] / total).quantize(Decimal('0.00'))
                    speed_item[value][isp_item]["500K"] = Decimal(
                        temp["500K"] / total).quantize(Decimal('0.00'))
                    speed_item[value][isp_item]["750K"] = Decimal(
                        temp["750K"] / total).quantize(Decimal('0.00'))
                    speed_item[value][isp_item]["1M"] = Decimal(
                        temp["1M"] / total).quantize(Decimal('0.00'))
                    speed_item[value][isp_item]["2M"] = Decimal(
                        temp["2M"] / total).quantize(Decimal('0.00'))
                    speed_item[value][isp_item]["3M"] = Decimal(
                        temp["3M"] / total).quantize(Decimal('0.00'))
                    speed_item[value][isp_item]["4M"] = Decimal(
                        temp["4M"] / total).quantize(Decimal('0.00'))
                    speed_item[value][isp_item]["Other"] = Decimal(
                        temp["Other"] / total).quantize(Decimal('0.00'))
        detailed_data.append(speed_item)

    log.info("[gen_detailed_by_interval] Generated data: ")
    log.info(str(detailed_data))

    return detailed_data


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(",")
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



