@@ -73,6 +73,7 @@ def custom_event_context_extractor(lambda_event):
7373from opentelemetry .context .context import Context
7474from opentelemetry .instrumentation .aws_lambda .package import _instruments
7575from opentelemetry .instrumentation .aws_lambda .version import __version__
76+ from opentelemetry .instrumentation .cidict import CIDict
7677from opentelemetry .instrumentation .instrumentor import BaseInstrumentor
7778from opentelemetry .instrumentation .utils import unwrap
7879from opentelemetry .metrics import MeterProvider , get_meter_provider
@@ -165,7 +166,9 @@ def _default_event_context_extractor(lambda_event: Any) -> Context:
165166 )
166167 if not isinstance (headers , dict ):
167168 headers = {}
168- return get_global_textmap ().extract (headers )
169+ return get_global_textmap ().extract (
170+ CIDict (headers ),
171+ )
169172
170173
171174def _determine_parent_context (
@@ -205,20 +208,21 @@ def _set_api_gateway_v1_proxy_attributes(
205208 span .set_attribute (HTTP_METHOD , lambda_event .get ("httpMethod" ))
206209
207210 if lambda_event .get ("headers" ):
208- if "User-Agent" in lambda_event ["headers" ]:
211+ headers = CIDict (lambda_event ["headers" ])
212+ if "User-Agent" in headers :
209213 span .set_attribute (
210214 HTTP_USER_AGENT ,
211- lambda_event [ " headers" ] ["User-Agent" ],
215+ headers ["User-Agent" ],
212216 )
213- if "X-Forwarded-Proto" in lambda_event [ " headers" ] :
217+ if "X-Forwarded-Proto" in headers :
214218 span .set_attribute (
215219 HTTP_SCHEME ,
216- lambda_event [ " headers" ] ["X-Forwarded-Proto" ],
220+ headers ["X-Forwarded-Proto" ],
217221 )
218- if "Host" in lambda_event [ " headers" ] :
222+ if "Host" in headers :
219223 span .set_attribute (
220224 NET_HOST_NAME ,
221- lambda_event [ " headers" ] ["Host" ],
225+ headers ["Host" ],
222226 )
223227 if "resource" in lambda_event :
224228 span .set_attribute (HTTP_ROUTE , lambda_event ["resource" ])
0 commit comments