datadog_lambda 5.93.0__py3-none-any.whl → 5.94.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
datadog_lambda/handler.py CHANGED
@@ -7,6 +7,9 @@ from __future__ import absolute_import
7
7
  from importlib import import_module
8
8
 
9
9
  import os
10
+ from time import time_ns
11
+
12
+ from datadog_lambda.tracing import emit_telemetry_on_exception_outside_of_handler
10
13
  from datadog_lambda.wrapper import datadog_lambda_wrapper
11
14
  from datadog_lambda.module_name import modify_module_name
12
15
 
@@ -27,5 +30,17 @@ if len(parts) != 2:
27
30
 
28
31
  (mod_name, handler_name) = parts
29
32
  modified_mod_name = modify_module_name(mod_name)
30
- handler_module = import_module(modified_mod_name)
31
- handler = datadog_lambda_wrapper(getattr(handler_module, handler_name))
33
+
34
+ try:
35
+ handler_load_start_time_ns = time_ns()
36
+ handler_module = import_module(modified_mod_name)
37
+ handler_func = getattr(handler_module, handler_name)
38
+ except Exception as e:
39
+ emit_telemetry_on_exception_outside_of_handler(
40
+ e,
41
+ modified_mod_name,
42
+ handler_load_start_time_ns,
43
+ )
44
+ raise
45
+
46
+ handler = datadog_lambda_wrapper(handler_func)
datadog_lambda/metric.py CHANGED
@@ -100,7 +100,7 @@ def submit_enhanced_metric(metric_name, lambda_context):
100
100
 
101
101
  Args:
102
102
  metric_name (str): metric name w/o enhanced prefix i.e. "invocations" or "errors"
103
- lambda_context (dict): Lambda context dict passed to the function by AWS
103
+ lambda_context (object): Lambda context dict passed to the function by AWS
104
104
  """
105
105
  if not enhanced_metrics_enabled:
106
106
  logger.debug(
@@ -118,7 +118,7 @@ def submit_invocations_metric(lambda_context):
118
118
  """Increment aws.lambda.enhanced.invocations by 1, applying runtime, layer, and cold_start tags
119
119
 
120
120
  Args:
121
- lambda_context (dict): Lambda context dict passed to the function by AWS
121
+ lambda_context (object): Lambda context dict passed to the function by AWS
122
122
  """
123
123
  submit_enhanced_metric("invocations", lambda_context)
124
124
 
@@ -127,6 +127,6 @@ def submit_errors_metric(lambda_context):
127
127
  """Increment aws.lambda.enhanced.errors by 1, applying runtime, layer, and cold_start tags
128
128
 
129
129
  Args:
130
- lambda_context (dict): Lambda context dict passed to the function by AWS
130
+ lambda_context (object): Lambda context dict passed to the function by AWS
131
131
  """
132
132
  submit_enhanced_metric("errors", lambda_context)
datadog_lambda/tags.py CHANGED
@@ -55,9 +55,11 @@ def parse_lambda_tags_from_arn(lambda_context):
55
55
 
56
56
  def get_enhanced_metrics_tags(lambda_context):
57
57
  """Get the list of tags to apply to enhanced metrics"""
58
- tags = parse_lambda_tags_from_arn(lambda_context)
58
+ tags = []
59
+ if lambda_context:
60
+ tags = parse_lambda_tags_from_arn(lambda_context)
61
+ tags.append(f"memorysize:{lambda_context.memory_limit_in_mb}")
59
62
  tags.append(get_cold_start_tag())
60
- tags.append(f"memorysize:{lambda_context.memory_limit_in_mb}")
61
63
  tags.append(runtime_tag)
62
64
  tags.append(library_version_tag)
63
65
  return tags
datadog_lambda/tracing.py CHANGED
@@ -6,6 +6,7 @@ import hashlib
6
6
  import logging
7
7
  import os
8
8
  import base64
9
+ import traceback
9
10
  import ujson as json
10
11
  from datetime import datetime, timezone
11
12
  from typing import Optional, Dict
@@ -1320,3 +1321,34 @@ class InferredSpanInfo(object):
1320
1321
  e,
1321
1322
  )
1322
1323
  return False
1324
+
1325
+
1326
+ def emit_telemetry_on_exception_outside_of_handler(
1327
+ exception, resource_name, handler_load_start_time_ns
1328
+ ):
1329
+ """
1330
+ Emit an enhanced error metric and create a span for exceptions occurring outside the handler
1331
+ """
1332
+ submit_errors_metric(None)
1333
+ if dd_tracing_enabled:
1334
+ span = tracer.trace(
1335
+ "aws.lambda",
1336
+ service="aws.lambda",
1337
+ resource=resource_name,
1338
+ span_type="serverless",
1339
+ )
1340
+ span.start_ns = handler_load_start_time_ns
1341
+
1342
+ tags = {
1343
+ "error.status": 500,
1344
+ "error.type": type(exception).__name__,
1345
+ "error.message": exception,
1346
+ "error.stack": traceback.format_exc(),
1347
+ "resource_names": resource_name,
1348
+ "resource.name": resource_name,
1349
+ "operation_name": "aws.lambda",
1350
+ "status": "error",
1351
+ }
1352
+ span.set_tags(tags)
1353
+ span.error = 1
1354
+ span.finish()
datadog_lambda/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "5.93.0"
1
+ __version__ = "5.94.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: datadog_lambda
3
- Version: 5.93.0
3
+ Version: 5.94.0
4
4
  Summary: The Datadog AWS Lambda Library
5
5
  Home-page: https://github.com/DataDog/datadog-lambda-python
6
6
  License: Apache-2.0
@@ -4,24 +4,24 @@ datadog_lambda/cold_start.py,sha256=8-MsHGUo4fH88HrcOpjnHa6uRBEHOW3bI-fhiRNZQzg,
4
4
  datadog_lambda/constants.py,sha256=DeujbnguBT9nDioiaYlgQQdZ6Ps53sWXmYhruLVoCHE,1669
5
5
  datadog_lambda/dogstatsd.py,sha256=HCyl72oQUSF3E4y1ivrHaGTHL9WG1asGjB1Xo2D_Abc,4769
6
6
  datadog_lambda/extension.py,sha256=ZU64QpA2K9K9C0jfqusBgpiWQe0QA2dcJCNk7UgjVfw,621
7
- datadog_lambda/handler.py,sha256=P-ImnqDohdNBqiA-YGlhJf83FHgweCOC0LgzudZlc7A,992
7
+ datadog_lambda/handler.py,sha256=YuReCUXLyJCNTeRP_VgWzjCqUl6K6IRs_PU6RHm0VeE,1351
8
8
  datadog_lambda/logger.py,sha256=nGxNMouF7wcjmoPsgivzzjNLvSy3WbGtKElxOvITZDg,766
9
- datadog_lambda/metric.py,sha256=JzErzS_ZCYbQ7iojnDSSVSypWj_EyrSSqO2-CQ3cWSE,4595
9
+ datadog_lambda/metric.py,sha256=Khbmd6z2y9Ck1pcyyfXN4nQRFCRr8wbBFUj879Dl0aA,4601
10
10
  datadog_lambda/module_name.py,sha256=5FmOCjjgjq78b6a83QePZZFmqahAoy9XHdUNWdq2D1Q,139
11
11
  datadog_lambda/patch.py,sha256=6a-BqovSRKsU5hTQpzxgY-_bducT-UEVCLvd3fdxeWc,4710
12
12
  datadog_lambda/stats_writer.py,sha256=SIac96wu45AxDOZ4GraCbK3r1RKr4AFgXcEPHg1VX0A,243
13
13
  datadog_lambda/statsd_writer.py,sha256=F4SCJ6-J6YfvQNh0uQfAkP6QYiAtV3-MCsxz4QnaBBI,403
14
14
  datadog_lambda/tag_object.py,sha256=cZ7W9Ae5k3YxLOZzN5Hu8UqvOKtq5AWARele0L18Gjs,2091
15
- datadog_lambda/tags.py,sha256=PMoxJhIGMWrG7798rqdK8oBp5UzWJrOJaCcK83AeQ3o,2487
15
+ datadog_lambda/tags.py,sha256=wy6uH8eAGMn7cfZEdHpL9uEGoM85bVyyXhYwSQtfHHc,2532
16
16
  datadog_lambda/thread_stats_writer.py,sha256=fkjMDgrzwACrK_ZrCwl9mHz5U3CMLEyrsaondjdM3r8,2522
17
- datadog_lambda/tracing.py,sha256=wngNyiUuHcuy_TmWeKEQBsJiKSj0JyNoHHxhBOlm9Zs,47962
17
+ datadog_lambda/tracing.py,sha256=pkDdM3H7y1u9zLRPpmBlIBlFrJ7seHUJ6fygueDMBqQ,48927
18
18
  datadog_lambda/trigger.py,sha256=JK5am_XmEvueuLKrrF7k08sWnZVDOD6QvQjrsUJx1dM,12177
19
- datadog_lambda/version.py,sha256=uZmcswY6DeOIt6kTpeQsTfsvVvo4yNIPQZ1BLpNMuQE,23
19
+ datadog_lambda/version.py,sha256=RKLBqa39sV4SjikHzBZO4vUonBw1-qkk66cB7_-lC64,23
20
20
  datadog_lambda/wrapper.py,sha256=aU2sQdtv_7g1Cb1gAAxkEy4zUcFSsZVwRGgHreIWwB0,15272
21
21
  datadog_lambda/xray.py,sha256=jvA4Fk76PLMgsjUoUZ7gp2otv53hFt39Nvso1ZNaivg,3749
22
- datadog_lambda-5.93.0.dist-info/LICENSE,sha256=4yQmjpKp1MKL7DdRDPVHkKYc2W0aezm5SIDske8oAdM,11379
23
- datadog_lambda-5.93.0.dist-info/LICENSE-3rdparty.csv,sha256=9CDAR1GKawwTbZkqt1RP0uwEcaRM3RhOeTB5tWXr8Ts,1381
24
- datadog_lambda-5.93.0.dist-info/METADATA,sha256=sm8-SEF9ywrAI4x8fMpviEuH4_Fub6NChFTEFmNjtWw,7289
25
- datadog_lambda-5.93.0.dist-info/NOTICE,sha256=Jue-d8mQ1ENIHDZdYc2-X8mVYtScXb8pzF1pTLN-kRc,141
26
- datadog_lambda-5.93.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
27
- datadog_lambda-5.93.0.dist-info/RECORD,,
22
+ datadog_lambda-5.94.0.dist-info/LICENSE,sha256=4yQmjpKp1MKL7DdRDPVHkKYc2W0aezm5SIDske8oAdM,11379
23
+ datadog_lambda-5.94.0.dist-info/LICENSE-3rdparty.csv,sha256=9CDAR1GKawwTbZkqt1RP0uwEcaRM3RhOeTB5tWXr8Ts,1381
24
+ datadog_lambda-5.94.0.dist-info/METADATA,sha256=InEO5Gr4M--2Gqk71phC43oXPE6cKU9zSr7kB7k-m24,7289
25
+ datadog_lambda-5.94.0.dist-info/NOTICE,sha256=Jue-d8mQ1ENIHDZdYc2-X8mVYtScXb8pzF1pTLN-kRc,141
26
+ datadog_lambda-5.94.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
27
+ datadog_lambda-5.94.0.dist-info/RECORD,,