@@ -858,19 +858,24 @@ def create_service_mapping(val):
858858
859859
860860def determine_service_name (
861- service_mapping , specific_key , generic_key , default_value , fallback = None
861+ service_mapping , specific_key , generic_key , extracted_key , fallback = None
862862):
863- service_name = service_mapping .get (specific_key )
864- if service_name is None :
865- service_name = service_mapping .get (
866- generic_key ,
867- default_value if default_value is not None else fallback ,
868- )
869- return service_name
863+ # Check for mapped service (specific key first, then generic key)
864+ mapped_service = service_mapping .get (specific_key ) or service_mapping .get (generic_key )
865+ if mapped_service :
866+ return mapped_service
867+
868+ # Check if AWS service representation is disabled
869+ aws_service_representation = os .environ .get ("DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED" , "" ).lower ()
870+ if aws_service_representation in ("false" , "0" ):
871+ return fallback
872+
873+ # Use extracted_key if it exists and is not empty, otherwise use fallback
874+ return extracted_key .strip () if extracted_key and extracted_key .strip () else fallback
870875
871876
872877# Initialization code
873- service_mapping_str = os .getenv ("DD_SERVICE_MAPPING" , "" )
878+ service_mapping_str = os .environ . get ("DD_SERVICE_MAPPING" , "" )
874879service_mapping = create_service_mapping (service_mapping_str )
875880
876881_dd_origin = {"_dd.origin" : "lambda" }
@@ -1443,9 +1448,19 @@ def create_function_execution_span(
14431448 tags ["_dd.parent_source" ] = trace_context_source
14441449 tags .update (trigger_tags )
14451450 tracer .set_tags (_dd_origin )
1451+ # Determine service name based on config and env var
1452+ if config .service :
1453+ service_name = config .service
1454+ else :
1455+ aws_service_representation = os .environ .get ("DD_TRACE_AWS_SERVICE_REPRESENTATION_ENABLED" , "" ).lower ()
1456+ if aws_service_representation in ("false" , "0" ):
1457+ service_name = "aws.lambda"
1458+ else :
1459+ service_name = function_name if function_name else "aws.lambda"
1460+
14461461 span = tracer .trace (
14471462 "aws.lambda" ,
1448- service = config . service if config . service else function_name ,
1463+ service = service_name ,
14491464 resource = function_name ,
14501465 span_type = "serverless" ,
14511466 )
0 commit comments