Skip to content

Commit 812751b

Browse files
committed
Align with js implementation.
1 parent 908a42e commit 812751b

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
@@ -885,21 +885,17 @@ def create_inferred_span_from_api_gateway_websocket_event(
885885
def create_inferred_span_from_api_gateway_event(
886886
event, context, decode_authorizer_context: bool = True
887887
):
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 ""
890890
api_id = request_context.get("apiId")
891891
service_name = determine_service_name(
892892
service_mapping, api_id, "lambda_api_gateway", domain
893893
)
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)
903899
tags = {
904900
"operation_name": "aws.apigateway.rest",
905901
"http.url": domain + path,
@@ -942,6 +938,16 @@ def create_inferred_span_from_api_gateway_event(
942938
return span
943939

944940

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+
945951
def create_inferred_span_from_http_api_event(
946952
event, context, decode_authorizer_context: bool = True
947953
):

0 commit comments

Comments
 (0)