@@ -885,21 +885,17 @@ def create_inferred_span_from_api_gateway_websocket_event(
885
885
def create_inferred_span_from_api_gateway_event (
886
886
event , context , decode_authorizer_context : bool = True
887
887
):
888
- request_context = event .get ("requestContext" )
889
- domain = request_context .get ("domainName" , "" )
888
+ request_context = event .get ("requestContext" ) or {}
889
+ domain = request_context .get ("domainName" ) or ""
890
890
api_id = request_context .get ("apiId" )
891
891
service_name = determine_service_name (
892
892
service_mapping , api_id , "lambda_api_gateway" , domain
893
893
)
894
-
895
- method = request_context .get ("httpMethod" )
896
- if not method :
897
- method = request_context .get ("http" , {}).get ("method" )
898
-
899
- path = event .get ("rawPath" ) or request_context .get ("path" ) or request_context .get ("routeKey" )
900
- resource_path = event .get ("rawPath" ) or request_context .get ("resourcePath" ) or request_context .get ("routeKey" )
901
-
902
- resource = "{} {}" .format (method if method else domain , resource_path )
894
+ method = request_context .get ("httpMethod" ) or request_context .get ("http" , {}).get ("method" )
895
+ path = event .get ("rawPath" ) or request_context .get ("path" ) or request_context .get ("routeKey" , "" )
896
+ resource_path = _get_resource_path (event , request_context )
897
+
898
+ resource = "{} {}" .format (method , resource_path )
903
899
tags = {
904
900
"operation_name" : "aws.apigateway.rest" ,
905
901
"http.url" : domain + path ,
@@ -942,6 +938,16 @@ def create_inferred_span_from_api_gateway_event(
942
938
return span
943
939
944
940
941
+ def _get_resource_path (event , request_context ):
942
+ route_key = request_context .get ("routeKey" ) or ""
943
+ if "{" in route_key :
944
+ try :
945
+ return route_key .split (" " )[1 ]
946
+ except Exception as e :
947
+ logger .debug ("Error parsing routeKey: %s" , e )
948
+ return event .get ("rawPath" ) or request_context .get ("resourcePath" ) or route_key
949
+
950
+
945
951
def create_inferred_span_from_http_api_event (
946
952
event , context , decode_authorizer_context : bool = True
947
953
):
0 commit comments