diff --git a/datadog_lambda/__init__.py b/datadog_lambda/__init__.py index 0166f077..51355f62 100644 --- a/datadog_lambda/__init__.py +++ b/datadog_lambda/__init__.py @@ -8,9 +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() # The minor version corresponds to the Lambda layer version. diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index bbd0d027..e80db749 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -315,8 +315,8 @@ def extract_http_tags(event): path = apigateway_v2_http.get("path") method = apigateway_v2_http.get("method") - if path: - http_tags["http.url_details.path"] = path + if path and http_tags.get("http.url"): + http_tags["http.url"] += path if method: http_tags["http.method"] = method diff --git a/tests/integration/snapshots/logs/async-metrics_python310.log b/tests/integration/snapshots/logs/async-metrics_python310.log index 66351a99..d6eab5c6 100644 --- a/tests/integration/snapshots/logs/async-metrics_python310.log +++ b/tests/integration/snapshots/logs/async-metrics_python310.log @@ -104,8 +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", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -642,8 +641,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", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "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 8e19e239..50feb235 100644 --- a/tests/integration/snapshots/logs/async-metrics_python311.log +++ b/tests/integration/snapshots/logs/async-metrics_python311.log @@ -104,8 +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", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -642,8 +641,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", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "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 9879d875..9e7d5945 100644 --- a/tests/integration/snapshots/logs/async-metrics_python312.log +++ b/tests/integration/snapshots/logs/async-metrics_python312.log @@ -104,8 +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", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -642,8 +641,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", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "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 92bb83ef..1f5e889a 100644 --- a/tests/integration/snapshots/logs/async-metrics_python313.log +++ b/tests/integration/snapshots/logs/async-metrics_python313.log @@ -104,8 +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", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -642,8 +641,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", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "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 6c502146..9df1f6d4 100644 --- a/tests/integration/snapshots/logs/async-metrics_python38.log +++ b/tests/integration/snapshots/logs/async-metrics_python38.log @@ -104,8 +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", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -642,8 +641,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", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "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 42bdaeb8..008d7828 100644 --- a/tests/integration/snapshots/logs/async-metrics_python39.log +++ b/tests/integration/snapshots/logs/async-metrics_python39.log @@ -104,8 +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", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -642,8 +641,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", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "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 201ca82a..9a0f6337 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python310.log +++ b/tests/integration/snapshots/logs/sync-metrics_python310.log @@ -84,8 +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", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -679,8 +678,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", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "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 564db4a9..5be8c133 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python311.log +++ b/tests/integration/snapshots/logs/sync-metrics_python311.log @@ -84,8 +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", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -679,8 +678,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", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "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 6010a364..84296ede 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python312.log +++ b/tests/integration/snapshots/logs/sync-metrics_python312.log @@ -84,8 +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", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -679,8 +678,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", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "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 21d03362..48879800 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python313.log +++ b/tests/integration/snapshots/logs/sync-metrics_python313.log @@ -84,8 +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", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -679,8 +678,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", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "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 a6828904..bc2fff94 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python38.log +++ b/tests/integration/snapshots/logs/sync-metrics_python38.log @@ -84,8 +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", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -679,8 +678,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", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "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 6a8d692e..df3a5e83 100644 --- a/tests/integration/snapshots/logs/sync-metrics_python39.log +++ b/tests/integration/snapshots/logs/sync-metrics_python39.log @@ -84,8 +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", - "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/Prod/", + "http.url": "https://XXXX.execute-api.us-east-2.amazonaws.com/Prod/", "http.method": "GET", "http.route": "/", "http.status_code": "200" @@ -679,8 +678,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", - "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://XXXX.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", "http.status_code": "200" diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 15103937..cedd2695 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -301,8 +301,7 @@ def test_extract_trigger_tags_api_gateway(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/1234567890/stages/prod", - "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/prod/path/to/resource", + "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com/prod/path/to/resource", "http.method": "POST", "http.route": "/{proxy+}", }, @@ -320,8 +319,7 @@ def test_extract_trigger_tags_api_gateway_non_proxy(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/lgxbo6a518/stages/dev", - "http.url": "https://lgxbo6a518.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/dev/http/get", + "http.url": "https://lgxbo6a518.execute-api.eu-west-1.amazonaws.com/dev/http/get", "http.method": "GET", "http.route": "/http/get", }, @@ -387,8 +385,7 @@ def test_extract_trigger_tags_api_gateway_http_api(self): { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/x02yirxc7a/stages/$default", - "http.url": "https://x02yirxc7a.execute-api.eu-west-1.amazonaws.com", - "http.url_details.path": "/httpapi/get", + "http.url": "https://x02yirxc7a.execute-api.eu-west-1.amazonaws.com/httpapi/get", "http.method": "GET", "http.route": "/httpapi/get", }, @@ -406,7 +403,6 @@ def test_extract_trigger_tags_application_load_balancer(self): { "function_trigger.event_source": "application-load-balancer", "function_trigger.event_source_arn": "arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/lambda-xyz/123abc", - "http.url_details.path": "/lambda", "http.method": "GET", }, ) @@ -568,9 +564,7 @@ def test_extract_http_tags_with_invalid_request_context(self): event = {"requestContext": "not_a_dict", "path": "/test", "httpMethod": "GET"} 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"} - ) + self.assertEqual(http_tags, {"http.method": "GET"}) def test_extract_http_tags_with_invalid_apigateway_http(self): from datadog_lambda.trigger import extract_http_tags diff --git a/tests/test_wrapper.py b/tests/test_wrapper.py index e07b5ca9..ec3508ce 100644 --- a/tests/test_wrapper.py +++ b/tests/test_wrapper.py @@ -277,8 +277,7 @@ def test_5xx_sends_errors_metric_and_set_tags(self, mock_extract_trigger_tags): mock_extract_trigger_tags.return_value = { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-west-1::/restapis/1234567890/stages/prod", - "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com", - "http.url_details.path": "/prod/path/to/resource", + "http.url": "https://70ixmpl4fl.execute-api.us-east-2.amazonaws.com/prod/path/to/resource", "http.method": "GET", }