@@ -859,21 +859,17 @@ def create_inferred_span_from_api_gateway_websocket_event(
859
859
def create_inferred_span_from_api_gateway_event (
860
860
event , context , decode_authorizer_context : bool = True
861
861
):
862
- request_context = event .get ("requestContext" )
863
- domain = request_context .get ("domainName" , "" )
862
+ request_context = event .get ("requestContext" ) or {}
863
+ domain = request_context .get ("domainName" ) or ""
864
864
api_id = request_context .get ("apiId" )
865
865
service_name = determine_service_name (
866
866
service_mapping , api_id , "lambda_api_gateway" , domain
867
867
)
868
-
869
- method = request_context .get ("httpMethod" )
870
- if not method :
871
- method = request_context .get ("http" , {}).get ("method" )
872
-
873
- path = event .get ("rawPath" ) or request_context .get ("path" ) or request_context .get ("routeKey" )
874
- resource_path = event .get ("rawPath" ) or request_context .get ("resourcePath" ) or request_context .get ("routeKey" )
875
-
876
- resource = "{} {}" .format (method if method else domain , resource_path )
868
+ method = request_context .get ("httpMethod" ) or request_context .get ("http" , {}).get ("method" )
869
+ path = event .get ("rawPath" ) or request_context .get ("path" ) or request_context .get ("routeKey" , "" )
870
+ resource_path = _get_resource_path (event , request_context )
871
+
872
+ resource = "{} {}" .format (method , resource_path )
877
873
tags = {
878
874
"operation_name" : "aws.apigateway.rest" ,
879
875
"http.url" : domain + path ,
@@ -916,6 +912,16 @@ def create_inferred_span_from_api_gateway_event(
916
912
return span
917
913
918
914
915
+ def _get_resource_path (event , request_context ):
916
+ route_key = request_context .get ("routeKey" ) or ""
917
+ if "{" in route_key :
918
+ try :
919
+ return route_key .split (" " )[1 ]
920
+ except Exception as e :
921
+ logger .debug ("Error parsing routeKey: %s" , e )
922
+ return event .get ("rawPath" ) or request_context .get ("resourcePath" ) or route_key
923
+
924
+
919
925
def create_inferred_span_from_http_api_event (
920
926
event , context , decode_authorizer_context : bool = True
921
927
):
0 commit comments