@@ -512,6 +512,31 @@ def _instrumented_lambda_handler_call( # noqa pylint: disable=too-many-branches
512
512
except Exception as ex :
513
513
pass
514
514
515
+ eventBridgeTriggerSpan = None
516
+ try :
517
+ if type (lambda_event ) is dict and lambda_event .get ("source" ) is not None and type (lambda_event .get ("source" )) is str :
518
+ span_name = 'EventBridge event'
519
+ if lambda_event .get ("detail-type" ) is not None :
520
+ span_name = lambda_event .get ("detail-type" )
521
+
522
+ links = []
523
+ if lambda_event .get ("detail" ) is not None and lambda_event ["detail" ].get ("_context" ) is not None :
524
+ ctx = get_global_textmap ().extract (carrier = lambda_event ["detail" ].get ("_context" ))
525
+ links .append (Link (get_current_span (ctx ).get_span_context ()))
526
+
527
+ eventBridgeTriggerSpan = tracer .start_span (span_name , context = parent_context , kind = SpanKind .CONSUMER , links = links )
528
+ eventBridgeTriggerSpan .set_attribute (SpanAttributes .FAAS_TRIGGER , "pubsub" )
529
+ eventBridgeTriggerSpan .set_attribute ("faas.trigger.type" , "EventBridge" )
530
+ eventBridgeTriggerSpan .set_attribute ("aws.event.bridge.trigger.source" , lambda_event .get ("source" ))
531
+ parent_context = set_span_in_context (eventBridgeTriggerSpan )
532
+
533
+ eventBridgeTriggerSpan .set_attribute (
534
+ "rpc.request.body" ,
535
+ json .dumps (lambda_event ),
536
+ )
537
+ except Exception as ex :
538
+ pass
539
+
515
540
try :
516
541
with tracer .start_as_current_span (
517
542
name = orig_handler_name ,
@@ -685,6 +710,22 @@ def _instrumented_lambda_handler_call( # noqa pylint: disable=too-many-branches
685
710
except Exception :
686
711
pass
687
712
cognitoTriggerSpan .end ()
713
+
714
+ if lambda_event and eventBridgeTriggerSpan is not None :
715
+ try :
716
+ if isinstance (result , dict ) and result .get ("statusCode" ):
717
+ eventBridgeTriggerSpan .set_attribute (
718
+ SpanAttributes .HTTP_STATUS_CODE ,
719
+ result .get ("statusCode" ),
720
+ )
721
+ if isinstance (result , dict ) and result .get ("body" ):
722
+ eventBridgeTriggerSpan .set_attribute (
723
+ "rpc.response.body" ,
724
+ result .get ("body" ),
725
+ )
726
+ except Exception :
727
+ pass
728
+ eventBridgeTriggerSpan .end ()
688
729
689
730
now = time .time ()
690
731
_tracer_provider = tracer_provider or get_tracer_provider ()
@@ -712,6 +753,8 @@ def _instrumented_lambda_handler_call( # noqa pylint: disable=too-many-branches
712
753
dynamoTriggerSpan .end ()
713
754
if cognitoTriggerSpan is not None :
714
755
cognitoTriggerSpan .end ()
756
+ if eventBridgeTriggerSpan is not None :
757
+ eventBridgeTriggerSpan .end ()
715
758
716
759
now = time .time ()
717
760
_tracer_provider = tracer_provider or get_tracer_provider ()
0 commit comments