|
49 | 49 | extract_trigger_tags,
|
50 | 50 | extract_http_status_code_tag,
|
51 | 51 | )
|
52 |
| -from datadog_lambda.tag_object import tag_object |
53 | 52 |
|
54 | 53 | profiling_env_var = os.environ.get("DD_PROFILING_ENABLED", "false").lower() == "true"
|
55 | 54 | if profiling_env_var:
|
56 | 55 | from ddtrace.profiling import profiler
|
57 | 56 |
|
58 | 57 | logger = logging.getLogger(__name__)
|
59 | 58 |
|
60 |
| -dd_capture_lambda_payload_enabled = ( |
61 |
| - os.environ.get("DD_CAPTURE_LAMBDA_PAYLOAD", "false").lower() == "true" |
62 |
| -) |
63 |
| - |
64 | 59 | DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG"
|
65 | 60 | DD_LOGS_INJECTION = "DD_LOGS_INJECTION"
|
66 | 61 | DD_MERGE_XRAY_TRACES = "DD_MERGE_XRAY_TRACES"
|
|
72 | 67 | DD_COLD_START_TRACING = "DD_COLD_START_TRACING"
|
73 | 68 | DD_MIN_COLD_START_DURATION = "DD_MIN_COLD_START_DURATION"
|
74 | 69 | DD_COLD_START_TRACE_SKIP_LIB = "DD_COLD_START_TRACE_SKIP_LIB"
|
| 70 | +DD_CAPTURE_LAMBDA_PAYLOAD = "DD_CAPTURE_LAMBDA_PAYLOAD" |
| 71 | +DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH = "DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH" |
75 | 72 | DD_REQUESTS_SERVICE_NAME = "DD_REQUESTS_SERVICE_NAME"
|
76 | 73 | DD_SERVICE = "DD_SERVICE"
|
77 | 74 | DD_ENV = "DD_ENV"
|
78 | 75 |
|
| 76 | + |
| 77 | +def get_env_as_int(env_key, default_value: int) -> int: |
| 78 | + try: |
| 79 | + return int(os.environ.get(env_key, default_value)) |
| 80 | + except Exception as e: |
| 81 | + logger.warn( |
| 82 | + f"Failed to parse {env_key} as int. Using default value: {default_value}. Error: {e}" |
| 83 | + ) |
| 84 | + return default_value |
| 85 | + |
| 86 | + |
| 87 | +dd_capture_lambda_payload_enabled = ( |
| 88 | + os.environ.get(DD_CAPTURE_LAMBDA_PAYLOAD, "false").lower() == "true" |
| 89 | +) |
| 90 | + |
| 91 | +if dd_capture_lambda_payload_enabled: |
| 92 | + import datadog_lambda.tag_object as tag_object |
| 93 | + |
| 94 | + tag_object.max_depth = get_env_as_int( |
| 95 | + DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH, tag_object.max_depth |
| 96 | + ) |
| 97 | + |
79 | 98 | env_env_var = os.environ.get(DD_ENV, None)
|
80 | 99 |
|
81 | 100 | init_timestamp_ns = time_ns()
|
@@ -161,14 +180,9 @@ def __init__(self, func):
|
161 | 180 | self.cold_start_tracing = depends_on_dd_tracing_enabled(
|
162 | 181 | os.environ.get(DD_COLD_START_TRACING, "true").lower() == "true"
|
163 | 182 | )
|
164 |
| - self.min_cold_start_trace_duration = 3 |
165 |
| - if DD_MIN_COLD_START_DURATION in os.environ: |
166 |
| - try: |
167 |
| - self.min_cold_start_trace_duration = int( |
168 |
| - os.environ[DD_MIN_COLD_START_DURATION] |
169 |
| - ) |
170 |
| - except Exception: |
171 |
| - logger.debug(f"Malformatted env {DD_MIN_COLD_START_DURATION}") |
| 183 | + self.min_cold_start_trace_duration = get_env_as_int( |
| 184 | + DD_MIN_COLD_START_DURATION, 3 |
| 185 | + ) |
172 | 186 | self.cold_start_trace_skip_lib = [
|
173 | 187 | "ddtrace.internal.compat",
|
174 | 188 | "ddtrace.filters",
|
@@ -307,16 +321,14 @@ def _after(self, event, context):
|
307 | 321 | create_dd_dummy_metadata_subsegment(
|
308 | 322 | self.trigger_tags, XraySubsegment.LAMBDA_FUNCTION_TAGS_KEY
|
309 | 323 | )
|
310 |
| - should_trace_cold_start = ( |
311 |
| - dd_tracing_enabled and self.cold_start_tracing and is_new_sandbox() |
312 |
| - ) |
| 324 | + should_trace_cold_start = self.cold_start_tracing and is_new_sandbox() |
313 | 325 | if should_trace_cold_start:
|
314 | 326 | trace_ctx = tracer.current_trace_context()
|
315 | 327 |
|
316 | 328 | if self.span:
|
317 | 329 | if dd_capture_lambda_payload_enabled:
|
318 |
| - tag_object(self.span, "function.request", event) |
319 |
| - tag_object(self.span, "function.response", self.response) |
| 330 | + tag_object.tag_object(self.span, "function.request", event) |
| 331 | + tag_object.tag_object(self.span, "function.response", self.response) |
320 | 332 |
|
321 | 333 | if status_code:
|
322 | 334 | self.span.set_tag("http.status_code", status_code)
|
|
0 commit comments