|
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