datadog_lambda 5.93.0__tar.gz → 5.94.0__tar.gz
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-5.93.0 → datadog_lambda-5.94.0}/PKG-INFO +1 -1
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/handler.py +17 -2
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/metric.py +3 -3
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/tags.py +4 -2
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/tracing.py +32 -0
- datadog_lambda-5.94.0/datadog_lambda/version.py +1 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/pyproject.toml +1 -1
- datadog_lambda-5.93.0/datadog_lambda/version.py +0 -1
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/LICENSE +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/LICENSE-3rdparty.csv +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/NOTICE +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/README.md +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/__init__.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/api.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/cold_start.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/constants.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/dogstatsd.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/extension.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/logger.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/module_name.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/patch.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/stats_writer.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/statsd_writer.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/tag_object.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/thread_stats_writer.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/trigger.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/wrapper.py +0 -0
- {datadog_lambda-5.93.0 → datadog_lambda-5.94.0}/datadog_lambda/xray.py +0 -0
|
@@ -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
|
-
|
|
31
|
-
|
|
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)
|
|
@@ -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 (
|
|
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 (
|
|
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 (
|
|
130
|
+
lambda_context (object): Lambda context dict passed to the function by AWS
|
|
131
131
|
"""
|
|
132
132
|
submit_enhanced_metric("errors", lambda_context)
|
|
@@ -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 =
|
|
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
|
|
@@ -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()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "5.94.0"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "5.93.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|