Skip to content

Commit 8521eb1

Browse files
committed
feat(config): enable telemetry when SCA is on independently from appsec
1 parent 1fac67c commit 8521eb1

File tree

4 files changed

+28
-25
lines changed

4 files changed

+28
-25
lines changed

datadog_lambda/__init__.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
1+
import datadog_lambda.config # noqa: F401 Datadog Lambda Configuration needs to be resolved before `ddtrace` is imported
12
from datadog_lambda.cold_start import initialize_cold_start_tracing
2-
import os
3-
4-
5-
if os.environ.get("DD_INSTRUMENTATION_TELEMETRY_ENABLED") is None:
6-
# Telemetry is required for Appsec Software Composition Analysis
7-
os.environ["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = os.environ.get(
8-
"DD_APPSEC_ENABLED", "false"
9-
)
103

114

125
initialize_cold_start_tracing()

datadog_lambda/config.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,6 @@ def _resolve_env(self, key, default=None, cast=None, depends_on_tracing=False):
8282
logs_injection = _get_env("DD_LOGS_INJECTION", "true", as_bool)
8383
merge_xray_traces = _get_env("DD_MERGE_XRAY_TRACES", "false", as_bool)
8484

85-
telemetry_enabled = _get_env(
86-
"DD_INSTRUMENTATION_TELEMETRY_ENABLED",
87-
"false",
88-
as_bool,
89-
depends_on_tracing=True,
90-
)
9185
otel_enabled = _get_env("DD_TRACE_OTEL_ENABLED", "false", as_bool)
9286
profiling_enabled = _get_env("DD_PROFILING_ENABLED", "false", as_bool)
9387
llmobs_enabled = _get_env("DD_LLMOBS_ENABLED", "false", as_bool)
@@ -96,6 +90,7 @@ def _resolve_env(self, key, default=None, cast=None, depends_on_tracing=False):
9690
"DD_DATA_STREAMS_ENABLED", "false", as_bool, depends_on_tracing=True
9791
)
9892
appsec_enabled = _get_env("DD_APPSEC_ENABLED", "false", as_bool)
93+
sca_enabled = _get_env("DD_APPSEC_SCA_ENABLED", "false", as_bool)
9994

10095
is_gov_region = _get_env("AWS_REGION", "", lambda x: x.startswith("us-gov-"))
10196

@@ -144,3 +139,11 @@ def _reset(self):
144139
"Python Lambda Layer FIPS mode is %s.",
145140
"enabled" if config.fips_mode_enabled else "not enabled",
146141
)
142+
143+
144+
if (
145+
"DD_INSTRUMENTATION_TELEMETRY_ENABLED" not in os.environ
146+
and not config.sca_enabled
147+
and not config.appsec_enabled
148+
):
149+
os.environ["DD_INSTRUMENTATION_TELEMETRY_ENABLED"] = "false"

datadog_lambda/tracing.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,6 @@
5555
logger = logging.getLogger(__name__)
5656

5757
dd_trace_context = None
58-
if config.telemetry_enabled:
59-
# Enable the telemetry client if the user has opted in
60-
from ddtrace.internal.telemetry import telemetry_writer
61-
62-
telemetry_writer.enable()
6358

6459
propagator = HTTPPropagator()
6560

tests/test_config.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import importlib
2+
import sys
3+
14
import pytest
25

36
from datadog_lambda.config import config, _get_env, Config
@@ -14,6 +17,19 @@ def set_env(key, value):
1417
return set_env
1518

1619

20+
def test_config_import_does_not_import_ddtrace(monkeypatch):
21+
with monkeypatch.context() as patch:
22+
for name in list(sys.modules):
23+
if name == "ddtrace" or name.startswith("ddtrace."):
24+
patch.delitem(sys.modules, name, raising=False)
25+
patch.delitem(sys.modules, "datadog_lambda.config", raising=False)
26+
importlib.import_module("datadog_lambda.config")
27+
assert not any(
28+
module_name == "ddtrace" or module_name.startswith("ddtrace.")
29+
for module_name in sys.modules
30+
), "The config module should not import ddtrace."
31+
32+
1733
def _test_as_bool(env_key, conf_key, default):
1834
return (
1935
(env_key, conf_key, None, default),
@@ -72,9 +88,6 @@ def _test_as_list(env_key, conf_key, default):
7288
*_test_as_bool("DD_INTEGRATION_TEST", "integration_test", default=False),
7389
*_test_as_bool("DD_BOTOCORE_ADD_SPAN_POINTERS", "add_span_pointers", default=True),
7490
*_test_as_bool("DD_TRACE_OTEL_ENABLED", "otel_enabled", default=False),
75-
*_test_as_bool(
76-
"DD_INSTRUMENTATION_TELEMETRY_ENABLED", "telemetry_enabled", default=False
77-
),
7891
*_test_as_bool("DD_MERGE_XRAY_TRACES", "merge_xray_traces", default=False),
7992
*_test_as_bool("DD_PROFILING_ENABLED", "profiling_enabled", default=False),
8093
*_test_as_bool("DD_LLMOBS_ENABLED", "llmobs_enabled", default=False),
@@ -86,6 +99,8 @@ def _test_as_list(env_key, conf_key, default):
8699
),
87100
*_test_as_bool("DD_LOCAL_TEST", "local_test", default=False),
88101
*_test_as_bool("DD_DATA_STREAMS_ENABLED", "data_streams_enabled", default=False),
102+
*_test_as_bool("DD_APPSEC_ENABLED", "appsec_enabled", default=False),
103+
*_test_as_bool("DD_APPSEC_SCA_ENABLED", "sca_enabled", default=False),
89104
*_test_int(
90105
"DD_CAPTURE_LAMBDA_PAYLOAD_MAX_DEPTH", "capture_payload_max_depth", default=10
91106
),
@@ -143,9 +158,6 @@ def test_config_from_environ(env_key, conf_key, env_val, conf_val, setenv):
143158
"DD_DECODE_AUTHORIZER_CONTEXT", "decode_authorizer_context", default=True
144159
),
145160
*_test_as_bool("DD_DATA_STREAMS_ENABLED", "data_streams_enabled", default=False),
146-
*_test_as_bool(
147-
"DD_INSTRUMENTATION_TELEMETRY_ENABLED", "telemetry_enabled", default=False
148-
),
149161
)
150162

151163

0 commit comments

Comments
 (0)