From d70ed81c6eb3effa20d38f76a56e45b14815698d Mon Sep 17 00:00:00 2001 From: Alon Katz Date: Sun, 27 Jun 2021 19:04:46 +0300 Subject: [PATCH 1/6] Add support for api gateway of type HTTP --- epsagon/utils.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/epsagon/utils.py b/epsagon/utils.py index 836fa0c8..6f78a795 100644 --- a/epsagon/utils.py +++ b/epsagon/utils.py @@ -75,13 +75,19 @@ def update_http_headers(resource_data, response_headers): :param response_headers: response headers from HTTP request :return: update resource data dict """ - for header_key, header_value in response_headers.items(): - if header_key.lower() == 'x-amzn-requestid': - # This is a request to API Gateway - if '.appsync-api.' not in resource_data['metadata']['url']: - resource_data['type'] = 'api_gateway' - resource_data['metadata']['request_trace_id'] = header_value - break + lowered_response_headers = dict((k.lower(), v) for k, v in response_headers.items()) + + # apigw-requestid is sent in type HTTP for api gateway + request_id = lowered_response_headers.get('apigw-requestid') + + # override previous request_id if x-amzn-requestid exists else use previous value + request_id = lowered_response_headers.get('x-amzn-requestid', request_id) + + if request_id: + # This is a request to API Gateway + if '.appsync-api.' not in resource_data['metadata']['url']: + resource_data['type'] = 'api_gateway' + resource_data['metadata']['request_trace_id'] = request_id return resource_data From 33d60b96f17b442ed2301be805485c1ec8ca10a6 Mon Sep 17 00:00:00 2001 From: Alon Katz Date: Sun, 27 Jun 2021 19:16:35 +0300 Subject: [PATCH 2/6] no message --- epsagon/utils.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/epsagon/utils.py b/epsagon/utils.py index 6f78a795..ac568f79 100644 --- a/epsagon/utils.py +++ b/epsagon/utils.py @@ -78,10 +78,12 @@ def update_http_headers(resource_data, response_headers): lowered_response_headers = dict((k.lower(), v) for k, v in response_headers.items()) # apigw-requestid is sent in type HTTP for api gateway - request_id = lowered_response_headers.get('apigw-requestid') - # override previous request_id if x-amzn-requestid exists else use previous value - request_id = lowered_response_headers.get('x-amzn-requestid', request_id) + request_id = ( + lowered_response_headers.get("x-amzn-requestid") + if "x-amzn-requestid" in lowered_response_headers.keys() + else lowered_response_headers.get("apigw-requestid") + ) if request_id: # This is a request to API Gateway From 75031d78f3566cf80d2a7ae1d342069609e437e7 Mon Sep 17 00:00:00 2001 From: Alon Katz Date: Sun, 27 Jun 2021 19:17:05 +0300 Subject: [PATCH 3/6] no message --- epsagon/utils.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/epsagon/utils.py b/epsagon/utils.py index ac568f79..368f0ec7 100644 --- a/epsagon/utils.py +++ b/epsagon/utils.py @@ -77,8 +77,7 @@ def update_http_headers(resource_data, response_headers): """ lowered_response_headers = dict((k.lower(), v) for k, v in response_headers.items()) - # apigw-requestid is sent in type HTTP for api gateway - # override previous request_id if x-amzn-requestid exists else use previous value + # apigw-requestid is sent in type HTTP for api gateway and x-amzn-requestid for type REST request_id = ( lowered_response_headers.get("x-amzn-requestid") if "x-amzn-requestid" in lowered_response_headers.keys() From 60b1984f57ba599a7f64109e6f8f4176f4b5290e Mon Sep 17 00:00:00 2001 From: Alon Katz Date: Sun, 27 Jun 2021 19:21:40 +0300 Subject: [PATCH 4/6] no message --- epsagon/utils.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/epsagon/utils.py b/epsagon/utils.py index 368f0ec7..2df04b8c 100644 --- a/epsagon/utils.py +++ b/epsagon/utils.py @@ -77,12 +77,9 @@ def update_http_headers(resource_data, response_headers): """ lowered_response_headers = dict((k.lower(), v) for k, v in response_headers.items()) - # apigw-requestid is sent in type HTTP for api gateway and x-amzn-requestid for type REST - request_id = ( - lowered_response_headers.get("x-amzn-requestid") - if "x-amzn-requestid" in lowered_response_headers.keys() - else lowered_response_headers.get("apigw-requestid") - ) + # 'x-amzn-requestid' is sent for type REST in api gateway and 'apigw-requestid' is sent in type HTTP + # for backwards compatibility we always try to get 'x-amzn-requestid' first + request_id = lowered_response_headers.get("x-amzn-requestid", lowered_response_headers.get("apigw-requestid")) if request_id: # This is a request to API Gateway From 613d98072db17b6cc43b24a31efd6eb566c395e9 Mon Sep 17 00:00:00 2001 From: Alon Katz Date: Sun, 27 Jun 2021 19:30:38 +0300 Subject: [PATCH 5/6] no message --- epsagon/utils.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/epsagon/utils.py b/epsagon/utils.py index 2df04b8c..8c2223f1 100644 --- a/epsagon/utils.py +++ b/epsagon/utils.py @@ -75,11 +75,17 @@ def update_http_headers(resource_data, response_headers): :param response_headers: response headers from HTTP request :return: update resource data dict """ - lowered_response_headers = dict((k.lower(), v) for k, v in response_headers.items()) - - # 'x-amzn-requestid' is sent for type REST in api gateway and 'apigw-requestid' is sent in type HTTP - # for backwards compatibility we always try to get 'x-amzn-requestid' first - request_id = lowered_response_headers.get("x-amzn-requestid", lowered_response_headers.get("apigw-requestid")) + lowered_response_headers = \ + dict((k.lower(), v) for k, v in response_headers.items()) + + # 'x-amzn-requestid' is sent for type REST in api gateway + # and 'apigw-requestid' is sent in type HTTP for backwards compatibility + # we always try to get 'x-amzn-requestid' first + request_id = \ + lowered_response_headers.get( + "x-amzn-requestid", + lowered_response_headers.get("apigw-requestid") + ) if request_id: # This is a request to API Gateway From 98615327bb0a95931f23d2397d1e321879daf959 Mon Sep 17 00:00:00 2001 From: Alon Katz Date: Mon, 28 Jun 2021 09:41:16 +0300 Subject: [PATCH 6/6] no message --- epsagon/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/epsagon/utils.py b/epsagon/utils.py index 8c2223f1..bc454441 100644 --- a/epsagon/utils.py +++ b/epsagon/utils.py @@ -83,8 +83,8 @@ def update_http_headers(resource_data, response_headers): # we always try to get 'x-amzn-requestid' first request_id = \ lowered_response_headers.get( - "x-amzn-requestid", - lowered_response_headers.get("apigw-requestid") + 'x-amzn-requestid', + lowered_response_headers.get('apigw-requestid') ) if request_id: