@@ -927,6 +927,7 @@ def create_inferred_span_from_lambda_function_url_event(event, context):
927927 InferredSpanInfo .set_tags (tags , tag_source = "self" , synchronicity = "sync" )
928928 if span :
929929 span .set_tags (tags )
930+ span .set_metric (InferredSpanInfo .METRIC , 1.0 )
930931 span .start_ns = int (request_time_epoch * 1e6 )
931932 return span
932933
@@ -1047,6 +1048,7 @@ def create_inferred_span_from_api_gateway_websocket_event(
10471048 span = tracer .trace ("aws.apigateway.websocket" , ** args )
10481049 if span :
10491050 span .set_tags (tags )
1051+ span .set_metric (InferredSpanInfo .METRIC , 1.0 )
10501052 span .start_ns = int (
10511053 finish_time_ns
10521054 if finish_time_ns is not None
@@ -1061,6 +1063,8 @@ def create_inferred_span_from_api_gateway_event(
10611063 event , context , decode_authorizer_context : bool = True
10621064):
10631065 request_context = event .get ("requestContext" )
1066+ identity = request_context .get ("identity" )
1067+
10641068 domain = request_context .get ("domainName" , "" )
10651069 api_id = request_context .get ("apiId" )
10661070 service_name = determine_service_name (
@@ -1072,11 +1076,11 @@ def create_inferred_span_from_api_gateway_event(
10721076 resource_path = _get_resource_path (event , request_context )
10731077 resource = f"{ method } { resource_path } "
10741078 tags = {
1075- "operation_name" : "aws.apigateway.rest" ,
10761079 "http.url" : http_url ,
10771080 "endpoint" : path ,
10781081 "http.method" : method ,
10791082 "resource_names" : resource ,
1083+ "http.useragent" : identity .get ("userAgent" ),
10801084 "span.kind" : "server" ,
10811085 "apiid" : api_id ,
10821086 "apiname" : api_id ,
@@ -1091,7 +1095,7 @@ def create_inferred_span_from_api_gateway_event(
10911095 args = {
10921096 "service" : service_name ,
10931097 "resource" : resource ,
1094- "span_type" : "http " ,
1098+ "span_type" : "web " ,
10951099 }
10961100 tracer .set_tags (_dd_origin )
10971101 upstream_authorizer_span = None
@@ -1103,6 +1107,7 @@ def create_inferred_span_from_api_gateway_event(
11031107 span = tracer .trace ("aws.apigateway" , ** args )
11041108 if span :
11051109 span .set_tags (tags )
1110+ span .set_metric (InferredSpanInfo .METRIC , 1.0 )
11061111 # start time pushed by the inserted authorizer span
11071112 span .start_ns = int (
11081113 finish_time_ns
@@ -1140,13 +1145,12 @@ def create_inferred_span_from_http_api_event(
11401145 resource_path = _get_resource_path (event , request_context )
11411146 resource = f"{ method } { resource_path } "
11421147 tags = {
1143- "operation_name" : "aws.httpapi" ,
11441148 "endpoint" : path ,
11451149 "http.url" : http_url ,
11461150 "http.method" : http .get ("method" ),
11471151 "http.protocol" : http .get ("protocol" ),
11481152 "http.source_ip" : http .get ("sourceIp" ),
1149- "http.user_agent " : http .get ("userAgent" ),
1153+ "http.useragent " : http .get ("userAgent" ),
11501154 "resource_names" : resource ,
11511155 "request_id" : context .aws_request_id ,
11521156 "apiid" : api_id ,
@@ -1167,10 +1171,11 @@ def create_inferred_span_from_http_api_event(
11671171 Headers .Parent_Span_Finish_Time
11681172 )
11691173 span = tracer .trace (
1170- "aws.httpapi" , service = service_name , resource = resource , span_type = "http "
1174+ "aws.httpapi" , service = service_name , resource = resource , span_type = "web "
11711175 )
11721176 if span :
11731177 span .set_tags (tags )
1178+ span .set_metric (InferredSpanInfo .METRIC , 1.0 )
11741179 span .start_ns = int (inferred_span_start_ns )
11751180 return span
11761181
@@ -1237,6 +1242,7 @@ def create_inferred_span_from_sqs_event(event, context):
12371242 )
12381243 if span :
12391244 span .set_tags (tags )
1245+ span .set_metric (InferredSpanInfo .METRIC , 1.0 )
12401246 span .start = start_time
12411247 if upstream_span :
12421248 span .parent_id = upstream_span .span_id
@@ -1278,6 +1284,7 @@ def create_inferred_span_from_sns_event(event, context):
12781284 )
12791285 if span :
12801286 span .set_tags (tags )
1287+ span .set_metric (InferredSpanInfo .METRIC , 1.0 )
12811288 span .start = dt .replace (tzinfo = timezone .utc ).timestamp ()
12821289 return span
12831290
@@ -1313,6 +1320,7 @@ def create_inferred_span_from_kinesis_event(event, context):
13131320 )
13141321 if span :
13151322 span .set_tags (tags )
1323+ span .set_metric (InferredSpanInfo .METRIC , 1.0 )
13161324 span .start = request_time_epoch
13171325 return span
13181326
@@ -1345,6 +1353,7 @@ def create_inferred_span_from_dynamodb_event(event, context):
13451353 )
13461354 if span :
13471355 span .set_tags (tags )
1356+ span .set_metric (InferredSpanInfo .METRIC , 1.0 )
13481357
13491358 span .start = int (request_time_epoch )
13501359 return span
@@ -1381,6 +1390,7 @@ def create_inferred_span_from_s3_event(event, context):
13811390 )
13821391 if span :
13831392 span .set_tags (tags )
1393+ span .set_metric (InferredSpanInfo .METRIC , 1.0 )
13841394 span .start = dt .replace (tzinfo = timezone .utc ).timestamp ()
13851395 return span
13861396
@@ -1421,10 +1431,11 @@ def create_inferred_span_from_eventbridge_event(event, context):
14211431 )
14221432 if span :
14231433 span .set_tags (tags )
1434+ span .set_metric (InferredSpanInfo .METRIC , 1.0 )
14241435 span .start = dt .replace (tzinfo = timezone .utc ).timestamp ()
14251436
14261437 # Since inferred span will later parent Lambda, preserve Lambda's current parent
1427- if dd_trace_context . span_id :
1438+ if dd_trace_context and getattr ( dd_trace_context , " span_id" , None ) :
14281439 span .parent_id = dd_trace_context .span_id
14291440
14301441 return span
@@ -1512,6 +1523,7 @@ class InferredSpanInfo(object):
15121523 BASE_NAME = "_inferred_span"
15131524 SYNCHRONICITY = f"{ BASE_NAME } .synchronicity"
15141525 TAG_SOURCE = f"{ BASE_NAME } .tag_source"
1526+ METRIC = f"_dd.{ BASE_NAME } "
15151527
15161528 @staticmethod
15171529 def set_tags (
0 commit comments