Skip to content

Commit fc1b414

Browse files
committed
Align with js implementation.
1 parent 9528e72 commit fc1b414

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

datadog_lambda/tracing.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -859,21 +859,17 @@ def create_inferred_span_from_api_gateway_websocket_event(
859859
def create_inferred_span_from_api_gateway_event(
860860
event, context, decode_authorizer_context: bool = True
861861
):
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 ""
864864
api_id = request_context.get("apiId")
865865
service_name = determine_service_name(
866866
service_mapping, api_id, "lambda_api_gateway", domain
867867
)
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)
877873
tags = {
878874
"operation_name": "aws.apigateway.rest",
879875
"http.url": domain + path,
@@ -916,6 +912,16 @@ def create_inferred_span_from_api_gateway_event(
916912
return span
917913

918914

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+
919925
def create_inferred_span_from_http_api_event(
920926
event, context, decode_authorizer_context: bool = True
921927
):

0 commit comments

Comments
 (0)