@@ -86,8 +86,25 @@ def custom_event_context_extractor(lambda_event):
86
86
from opentelemetry .instrumentation .utils import unwrap
87
87
from opentelemetry .metrics import MeterProvider , get_meter_provider
88
88
from opentelemetry .propagate import get_global_textmap
89
- from opentelemetry .semconv .resource import ResourceAttributes
90
- from opentelemetry .semconv .trace import SpanAttributes
89
+ from opentelemetry .semconv ._incubating .attributes .cloud_attributes import (
90
+ CLOUD_ACCOUNT_ID ,
91
+ CLOUD_RESOURCE_ID ,
92
+ )
93
+ from opentelemetry .semconv ._incubating .attributes .faas_attributes import (
94
+ FAAS_INVOCATION_ID ,
95
+ FAAS_TRIGGER ,
96
+ )
97
+ from opentelemetry .semconv ._incubating .attributes .http_attributes import (
98
+ HTTP_METHOD ,
99
+ HTTP_ROUTE ,
100
+ HTTP_SCHEME ,
101
+ HTTP_STATUS_CODE ,
102
+ HTTP_TARGET ,
103
+ HTTP_USER_AGENT ,
104
+ )
105
+ from opentelemetry .semconv ._incubating .attributes .net_attributes import (
106
+ NET_HOST_NAME ,
107
+ )
91
108
from opentelemetry .trace import (
92
109
Span ,
93
110
SpanKind ,
@@ -171,38 +188,34 @@ def _set_api_gateway_v1_proxy_attributes(
171
188
More info:
172
189
https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-input-format
173
190
"""
174
- span .set_attribute (
175
- SpanAttributes .HTTP_METHOD , lambda_event .get ("httpMethod" )
176
- )
191
+ span .set_attribute (HTTP_METHOD , lambda_event .get ("httpMethod" ))
177
192
178
193
if lambda_event .get ("headers" ):
179
194
if "User-Agent" in lambda_event ["headers" ]:
180
195
span .set_attribute (
181
- SpanAttributes . HTTP_USER_AGENT ,
196
+ HTTP_USER_AGENT ,
182
197
lambda_event ["headers" ]["User-Agent" ],
183
198
)
184
199
if "X-Forwarded-Proto" in lambda_event ["headers" ]:
185
200
span .set_attribute (
186
- SpanAttributes . HTTP_SCHEME ,
201
+ HTTP_SCHEME ,
187
202
lambda_event ["headers" ]["X-Forwarded-Proto" ],
188
203
)
189
204
if "Host" in lambda_event ["headers" ]:
190
205
span .set_attribute (
191
- SpanAttributes . NET_HOST_NAME ,
206
+ NET_HOST_NAME ,
192
207
lambda_event ["headers" ]["Host" ],
193
208
)
194
209
if "resource" in lambda_event :
195
- span .set_attribute (SpanAttributes . HTTP_ROUTE , lambda_event ["resource" ])
210
+ span .set_attribute (HTTP_ROUTE , lambda_event ["resource" ])
196
211
197
212
if lambda_event .get ("queryStringParameters" ):
198
213
span .set_attribute (
199
- SpanAttributes . HTTP_TARGET ,
214
+ HTTP_TARGET ,
200
215
f"{ lambda_event ['resource' ]} ?{ urlencode (lambda_event ['queryStringParameters' ])} " ,
201
216
)
202
217
else :
203
- span .set_attribute (
204
- SpanAttributes .HTTP_TARGET , lambda_event ["resource" ]
205
- )
218
+ span .set_attribute (HTTP_TARGET , lambda_event ["resource" ])
206
219
207
220
return span
208
221
@@ -217,34 +230,34 @@ def _set_api_gateway_v2_proxy_attributes(
217
230
"""
218
231
if "domainName" in lambda_event ["requestContext" ]:
219
232
span .set_attribute (
220
- SpanAttributes . NET_HOST_NAME ,
233
+ NET_HOST_NAME ,
221
234
lambda_event ["requestContext" ]["domainName" ],
222
235
)
223
236
224
237
if lambda_event ["requestContext" ].get ("http" ):
225
238
if "method" in lambda_event ["requestContext" ]["http" ]:
226
239
span .set_attribute (
227
- SpanAttributes . HTTP_METHOD ,
240
+ HTTP_METHOD ,
228
241
lambda_event ["requestContext" ]["http" ]["method" ],
229
242
)
230
243
if "userAgent" in lambda_event ["requestContext" ]["http" ]:
231
244
span .set_attribute (
232
- SpanAttributes . HTTP_USER_AGENT ,
245
+ HTTP_USER_AGENT ,
233
246
lambda_event ["requestContext" ]["http" ]["userAgent" ],
234
247
)
235
248
if "path" in lambda_event ["requestContext" ]["http" ]:
236
249
span .set_attribute (
237
- SpanAttributes . HTTP_ROUTE ,
250
+ HTTP_ROUTE ,
238
251
lambda_event ["requestContext" ]["http" ]["path" ],
239
252
)
240
253
if lambda_event .get ("rawQueryString" ):
241
254
span .set_attribute (
242
- SpanAttributes . HTTP_TARGET ,
255
+ HTTP_TARGET ,
243
256
f"{ lambda_event ['requestContext' ]['http' ]['path' ]} ?{ lambda_event ['rawQueryString' ]} " ,
244
257
)
245
258
else :
246
259
span .set_attribute (
247
- SpanAttributes . HTTP_TARGET ,
260
+ HTTP_TARGET ,
248
261
lambda_event ["requestContext" ]["http" ]["path" ],
249
262
)
250
263
@@ -319,11 +332,11 @@ def _instrumented_lambda_handler_call( # noqa pylint: disable=too-many-branches
319
332
# See more:
320
333
# https://github.com/open-telemetry/semantic-conventions/blob/main/docs/faas/aws-lambda.md#resource-detector
321
334
span .set_attribute (
322
- SpanAttributes . CLOUD_RESOURCE_ID ,
335
+ CLOUD_RESOURCE_ID ,
323
336
lambda_context .invoked_function_arn ,
324
337
)
325
338
span .set_attribute (
326
- SpanAttributes . FAAS_INVOCATION_ID ,
339
+ FAAS_INVOCATION_ID ,
327
340
lambda_context .aws_request_id ,
328
341
)
329
342
@@ -335,7 +348,7 @@ def _instrumented_lambda_handler_call( # noqa pylint: disable=too-many-branches
335
348
":"
336
349
)[4 ]
337
350
span .set_attribute (
338
- ResourceAttributes . CLOUD_ACCOUNT_ID ,
351
+ CLOUD_ACCOUNT_ID ,
339
352
account_id ,
340
353
)
341
354
@@ -354,7 +367,7 @@ def _instrumented_lambda_handler_call( # noqa pylint: disable=too-many-branches
354
367
if isinstance (lambda_event , dict ) and lambda_event .get (
355
368
"requestContext"
356
369
):
357
- span .set_attribute (SpanAttributes . FAAS_TRIGGER , "http" )
370
+ span .set_attribute (FAAS_TRIGGER , "http" )
358
371
359
372
if lambda_event .get ("version" ) == "2.0" :
360
373
_set_api_gateway_v2_proxy_attributes (
@@ -367,7 +380,7 @@ def _instrumented_lambda_handler_call( # noqa pylint: disable=too-many-branches
367
380
368
381
if isinstance (result , dict ) and result .get ("statusCode" ):
369
382
span .set_attribute (
370
- SpanAttributes . HTTP_STATUS_CODE ,
383
+ HTTP_STATUS_CODE ,
371
384
result .get ("statusCode" ),
372
385
)
373
386
finally :
0 commit comments