@@ -224,7 +224,7 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context):
224224 logger .debug ("Failed extracting context as EventBridge to SQS." )
225225
226226 try :
227- dd_json_data , _ = extract_dd_json_data_from_message_attributes (event )
227+ dd_json_data , _ = extract_dd_context_from_sqs_or_sns_event (event )
228228 if dd_json_data :
229229 dd_data = json .loads (dd_json_data )
230230
@@ -264,7 +264,7 @@ def extract_context_from_sqs_or_sns_event_or_context(event, lambda_context):
264264 return extract_context_from_lambda_context (lambda_context )
265265
266266
267- def extract_dd_json_data_from_message_attributes (event ):
267+ def extract_dd_context_from_sqs_or_sns_event (event ):
268268 first_record = event .get ("Records" )[0 ]
269269 arn = first_record .get ("eventSourceARN" , "" )
270270 is_sqs = bool (arn )
@@ -366,28 +366,34 @@ def extract_context_from_kinesis_event(event, lambda_context):
366366 Extract datadog trace context from a Kinesis Stream's base64 encoded data string
367367 """
368368 try :
369- record = get_first_record (event )
370- kinesis = record .get ("kinesis" )
371- if not kinesis :
372- return extract_context_from_lambda_context (lambda_context )
373- data = kinesis .get ("data" )
374- if data :
375- import base64
376-
377- b64_bytes = data .encode ("ascii" )
378- str_bytes = base64 .b64decode (b64_bytes )
379- data_str = str_bytes .decode ("ascii" )
380- data_obj = json .loads (data_str )
381- dd_ctx = data_obj .get ("_datadog" )
382- if dd_ctx :
383- context = propagator .extract (dd_ctx )
384- return context
369+ dd_ctx , _ = extract_dd_context_from_kinesis_event (event , lambda_context )
370+ if dd_ctx :
371+ return propagator .extract (dd_ctx )
385372 except Exception as e :
386373 logger .debug ("The trace extractor returned with error %s" , e )
387374
388375 return extract_context_from_lambda_context (lambda_context )
389376
390377
378+ def extract_dd_context_from_kinesis_event (event , lambda_context ):
379+ record = get_first_record (event )
380+ arn = record .get ("eventSourceARN" , "" )
381+ kinesis = record .get ("kinesis" )
382+ if not kinesis :
383+ return extract_context_from_lambda_context (lambda_context )
384+ data = kinesis .get ("data" )
385+ if data :
386+ import base64
387+
388+ b64_bytes = data .encode ("ascii" )
389+ str_bytes = base64 .b64decode (b64_bytes )
390+ data_str = str_bytes .decode ("ascii" )
391+ data_obj = json .loads (data_str )
392+ dd_ctx = data_obj .get ("_datadog" )
393+ return dd_ctx , arn
394+ return None , None
395+
396+
391397def _deterministic_sha256_hash (s : str , part : str ) -> int :
392398 import hashlib
393399
0 commit comments