diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index 0166f077b..2034d3cbf 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -8,8 +8,6 @@ "DD_APPSEC_ENABLED", "false" ) -if os.environ.get("DD_API_SECURITY_ENABLED") is None: - os.environ["DD_API_SECURITY_ENABLED"] = "False" initialize_cold_start_tracing() diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index bbd0d027a..65800cf72 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -288,7 +288,7 @@ def extract_http_tags(event): """ Extracts HTTP facet tags from the triggering event """ - http_tags = {} + http_tags = {"span.kind": "server"} # Safely get request_context and ensure it's a dictionary request_context = event.get("requestContext") diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 66351a990..d72afba39 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python311.log b/tests/integration/snapshots/logs/async-metrics_python311.log index 8e19e239d..dac9c4277 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python312.log b/tests/integration/snapshots/logs/async-metrics_python312.log index 9879d8754..c2b624ff3 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python313.log b/tests/integration/snapshots/logs/async-metrics_python313.log index 92bb83efe..9a5e763f9 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python38.log b/tests/integration/snapshots/logs/async-metrics_python38.log index 6c5021469..9e6370b5b 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/async-metrics_python39.log b/tests/integration/snapshots/logs/async-metrics_python39.log index 42bdaeb84..70f7a59f1 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -104,6 +104,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -642,6 +643,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1479,6 +1481,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python310.log b/tests/integration/snapshots/logs/sync-metrics_python310.log index 201ca82a7..7d504bdcb 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python311.log b/tests/integration/snapshots/logs/sync-metrics_python311.log index 564db4a94..aa242652d 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python312.log b/tests/integration/snapshots/logs/sync-metrics_python312.log index 6010a3641..99471eaf8 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python313.log b/tests/integration/snapshots/logs/sync-metrics_python313.log index 21d033620..e53aae508 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python38.log b/tests/integration/snapshots/logs/sync-metrics_python38.log index a68289046..9cbf45648 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/integration/snapshots/logs/sync-metrics_python39.log b/tests/integration/snapshots/logs/sync-metrics_python39.log index 6a8d692e9..cc0407c1b 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -84,6 +84,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.us-east-2.amazonaws.com/", "http.url_details.path": "/Prod/", "http.method": "GET", @@ -679,6 +680,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX$default", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", @@ -1611,6 +1613,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate","A "span.name": "aws.lambda", "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "XXXX", + "span.kind": "server", "http.url": "https://xxxx.execute-api.eu-west-1.amazonaws.com/", "http.status_code": "200" }, diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 151039372..452635cfc 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -305,6 +305,7 @@ def test_extract_trigger_tags_api_gateway(self): "http.url_details.path": "/prod/path/to/resource", "http.method": "POST", "http.route": "/{proxy+}", + "span.kind": "server", }, ) @@ -324,6 +325,7 @@ def test_extract_trigger_tags_api_gateway_non_proxy(self): "http.url_details.path": "/dev/http/get", "http.method": "GET", "http.route": "/http/get", + "span.kind": "server", }, ) @@ -340,6 +342,7 @@ def test_extract_trigger_tags_api_gateway_websocket_connect(self): "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com/", + "span.kind": "server", }, ) @@ -356,6 +359,7 @@ def test_extract_trigger_tags_api_gateway_websocket_default(self): "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com/", + "span.kind": "server", }, ) @@ -372,6 +376,7 @@ def test_extract_trigger_tags_api_gateway_websocket_disconnect(self): "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/p62c47itsb/stages/dev", "http.url": "https://p62c47itsb.execute-api.eu-west-1.amazonaws.com/", + "span.kind": "server", }, ) @@ -390,6 +395,7 @@ def test_extract_trigger_tags_api_gateway_http_api(self): "http.url": "https://x02yirxc7a.execute-api.eu-west-1.amazonaws.com/", "http.url_details.path": "/httpapi/get", "http.method": "GET", + "span.kind": "server", "http.route": "/httpapi/get", }, ) @@ -408,6 +414,7 @@ def test_extract_trigger_tags_application_load_balancer(self): "function_trigger.event_source_arn": "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-xyz/123abc", "http.url_details.path": "/lambda", "http.method": "GET", + "span.kind": "server", }, ) @@ -569,7 +576,12 @@ def test_extract_http_tags_with_invalid_request_context(self): http_tags = extract_http_tags(event) # Should still extract valid tags from the event self.assertEqual( - http_tags, {"http.url_details.path": "/test", "http.method": "GET"} + http_tags, + { + "span.kind": "server", + "http.url_details.path": "/test", + "http.method": "GET", + }, ) def test_extract_http_tags_with_invalid_apigateway_http(self): @@ -582,7 +594,7 @@ def test_extract_http_tags_with_invalid_apigateway_http(self): } http_tags = extract_http_tags(event) # Should not raise an exception - self.assertEqual(http_tags, {}) + self.assertEqual(http_tags, {"span.kind": "server"}) def test_extract_http_tags_with_invalid_headers(self): from datadog_lambda.trigger import extract_http_tags @@ -591,7 +603,7 @@ def test_extract_http_tags_with_invalid_headers(self): event = {"headers": "not_a_dict"} http_tags = extract_http_tags(event) # Should not raise an exception - self.assertEqual(http_tags, {}) + self.assertEqual(http_tags, {"span.kind": "server"}) def test_extract_http_tags_with_invalid_route(self): from datadog_lambda.trigger import extract_http_tags @@ -600,7 +612,7 @@ def test_extract_http_tags_with_invalid_route(self): event = {"routeKey": 12345} # Not a string http_tags = extract_http_tags(event) # Should not raise an exception - self.assertEqual(http_tags, {}) + self.assertEqual(http_tags, {"span.kind": "server"}) class ExtractHTTPStatusCodeTag(unittest.TestCase):