diff --git a/integration_tests/snapshots/logs/process-input-traced_node18.log b/integration_tests/snapshots/logs/process-input-traced_node18.log index 1c9bdc9e..49a3dc3f 100644 --- a/integration_tests/snapshots/logs/process-input-traced_node18.log +++ b/integration_tests/snapshots/logs/process-input-traced_node18.log @@ -40,7 +40,7 @@ START "service": "remappedApiGatewayServiceName", "runtime-id":"XXXX", "operation_name": "aws.apigateway", - "http.url": "undefined", + "http.url": "https://undefined", "resource_names": "GET /{proxy+}", "request_id":"XXXX", "apiid":"XXXX", diff --git a/integration_tests/snapshots/logs/process-input-traced_node20.log b/integration_tests/snapshots/logs/process-input-traced_node20.log index cb7cf040..4a047a7e 100644 --- a/integration_tests/snapshots/logs/process-input-traced_node20.log +++ b/integration_tests/snapshots/logs/process-input-traced_node20.log @@ -40,7 +40,7 @@ START "service": "remappedApiGatewayServiceName", "runtime-id":"XXXX", "operation_name": "aws.apigateway", - "http.url": "undefined", + "http.url": "https://undefined", "resource_names": "GET /{proxy+}", "request_id":"XXXX", "apiid":"XXXX", diff --git a/integration_tests/snapshots/logs/process-input-traced_node22.log b/integration_tests/snapshots/logs/process-input-traced_node22.log index dec8b049..f845f3e1 100644 --- a/integration_tests/snapshots/logs/process-input-traced_node22.log +++ b/integration_tests/snapshots/logs/process-input-traced_node22.log @@ -40,7 +40,7 @@ START "service": "remappedApiGatewayServiceName", "runtime-id":"XXXX", "operation_name": "aws.apigateway", - "http.url": "undefined", + "http.url": "https://undefined", "resource_names": "GET /{proxy+}", "request_id":"XXXX", "apiid":"XXXX", diff --git a/integration_tests/snapshots/logs/status-code-500s_node18.log b/integration_tests/snapshots/logs/status-code-500s_node18.log index 1c4803a0..2e3b87e4 100644 --- a/integration_tests/snapshots/logs/status-code-500s_node18.log +++ b/integration_tests/snapshots/logs/status-code-500s_node18.log @@ -46,7 +46,7 @@ START "service": "remappedApiGatewayServiceName", "runtime-id":"XXXX", "operation_name": "aws.apigateway", - "http.url": "undefined", + "http.url": "https://undefined", "resource_names": "GET /{proxy+}", "request_id":"XXXX", "apiid":"XXXX", diff --git a/integration_tests/snapshots/logs/status-code-500s_node20.log b/integration_tests/snapshots/logs/status-code-500s_node20.log index 14b5e19d..505aa45c 100644 --- a/integration_tests/snapshots/logs/status-code-500s_node20.log +++ b/integration_tests/snapshots/logs/status-code-500s_node20.log @@ -46,7 +46,7 @@ START "service": "remappedApiGatewayServiceName", "runtime-id":"XXXX", "operation_name": "aws.apigateway", - "http.url": "undefined", + "http.url": "https://undefined", "resource_names": "GET /{proxy+}", "request_id":"XXXX", "apiid":"XXXX", diff --git a/integration_tests/snapshots/logs/status-code-500s_node22.log b/integration_tests/snapshots/logs/status-code-500s_node22.log index fa665993..645f322c 100644 --- a/integration_tests/snapshots/logs/status-code-500s_node22.log +++ b/integration_tests/snapshots/logs/status-code-500s_node22.log @@ -46,7 +46,7 @@ START "service": "remappedApiGatewayServiceName", "runtime-id":"XXXX", "operation_name": "aws.apigateway", - "http.url": "undefined", + "http.url": "https://undefined", "resource_names": "GET /{proxy+}", "request_id":"XXXX", "apiid":"XXXX", diff --git a/src/trace/span-inferrer.spec.ts b/src/trace/span-inferrer.spec.ts index 9cce7e69..2cf47be0 100644 --- a/src/trace/span-inferrer.spec.ts +++ b/src/trace/span-inferrer.spec.ts @@ -647,7 +647,7 @@ describe("SpanInferrer", () => { connection_id: "MM0qReAFGjQCE-w=", endpoint: "$connect", event_type: "CONNECT", - "http.url": "08se3mvh28.execute-api.eu-west-1.amazonaws.com$connect", + "http.url": "https://08se3mvh28.execute-api.eu-west-1.amazonaws.com$connect", message_direction: "IN", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", @@ -672,7 +672,7 @@ describe("SpanInferrer", () => { _inferred_span: { synchronicity: "sync", tag_source: "self" }, apiid: "id", endpoint: "/my/path", - "http.url": "id.execute-api.us-east-1.amazonaws.com/my/path", + "http.url": "https://id.execute-api.us-east-1.amazonaws.com/my/path", domain_name: "id.execute-api.us-east-1.amazonaws.com", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", @@ -699,7 +699,7 @@ describe("SpanInferrer", () => { _inferred_span: { synchronicity: "sync", tag_source: "self" }, apiid: "r3pmxmplak", endpoint: "/default/nodejs-apig-function-1G3XMPLZXVXYI", - "http.url": "r3pmxmplak.execute-api.us-east-2.amazonaws.com/default/nodejs-apig-function-1G3XMPLZXVXYI", + "http.url": "https://r3pmxmplak.execute-api.us-east-2.amazonaws.com/default/nodejs-apig-function-1G3XMPLZXVXYI", domain_name: "r3pmxmplak.execute-api.us-east-2.amazonaws.com", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", @@ -726,7 +726,7 @@ describe("SpanInferrer", () => { _inferred_span: { synchronicity: "sync", tag_source: "self" }, apiid: "mcwkra0ya4", endpoint: "/dev/user/42", - "http.url": "mcwkra0ya4.execute-api.sa-east-1.amazonaws.com/dev/user/42", + "http.url": "https://mcwkra0ya4.execute-api.sa-east-1.amazonaws.com/dev/user/42", domain_name: "mcwkra0ya4.execute-api.sa-east-1.amazonaws.com", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", @@ -753,7 +753,7 @@ describe("SpanInferrer", () => { _inferred_span: { synchronicity: "sync", tag_source: "self" }, apiid: "9vj54we5ih", endpoint: "/user/42", - "http.url": "9vj54we5ih.execute-api.sa-east-1.amazonaws.com/user/42", + "http.url": "https://9vj54we5ih.execute-api.sa-east-1.amazonaws.com/user/42", domain_name: "9vj54we5ih.execute-api.sa-east-1.amazonaws.com", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", @@ -783,7 +783,7 @@ describe("SpanInferrer", () => { }, endpoint: "/", "http.method": "GET", - "http.url": "a8hyhsshac.lambda-url.eu-south-1.amazonaws.com/", + "http.url": "https://a8hyhsshac.lambda-url.eu-south-1.amazonaws.com/", operation_name: "aws.lambda.url", "peer.service": "mock-lambda-service", request_id: undefined, @@ -868,7 +868,7 @@ describe("Authorizer Spans", () => { domain_name: "3gsxz7lha4.execute-api.eu-west-1.amazonaws.com", endpoint: "/dev/hello", "http.method": "POST", - "http.url": "3gsxz7lha4.execute-api.eu-west-1.amazonaws.com/dev/hello", + "http.url": "https://3gsxz7lha4.execute-api.eu-west-1.amazonaws.com/dev/hello", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", request_id: undefined, @@ -892,7 +892,7 @@ describe("Authorizer Spans", () => { domain_name: "3gsxz7lha4.execute-api.eu-west-1.amazonaws.com", endpoint: "/dev/hello", "http.method": "POST", - "http.url": "3gsxz7lha4.execute-api.eu-west-1.amazonaws.com/dev/hello", + "http.url": "https://3gsxz7lha4.execute-api.eu-west-1.amazonaws.com/dev/hello", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", request_id: undefined, @@ -921,7 +921,7 @@ describe("Authorizer Spans", () => { domain_name: "3gsxz7lha4.execute-api.eu-west-1.amazonaws.com", endpoint: "/dev/hello", "http.method": "POST", - "http.url": "3gsxz7lha4.execute-api.eu-west-1.amazonaws.com/dev/hello", + "http.url": "https://3gsxz7lha4.execute-api.eu-west-1.amazonaws.com/dev/hello", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", request_id: undefined, @@ -950,7 +950,7 @@ describe("Authorizer Spans", () => { domain_name: "4dyr9xqip7.execute-api.eu-west-1.amazonaws.com", endpoint: "/dev/hi", "http.method": "GET", - "http.url": "4dyr9xqip7.execute-api.eu-west-1.amazonaws.com/dev/hi", + "http.url": "https://4dyr9xqip7.execute-api.eu-west-1.amazonaws.com/dev/hi", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", request_id: undefined, @@ -974,7 +974,7 @@ describe("Authorizer Spans", () => { domain_name: "4dyr9xqip7.execute-api.eu-west-1.amazonaws.com", endpoint: "/dev/hi", "http.method": "GET", - "http.url": "4dyr9xqip7.execute-api.eu-west-1.amazonaws.com/dev/hi", + "http.url": "https://4dyr9xqip7.execute-api.eu-west-1.amazonaws.com/dev/hi", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", request_id: undefined, @@ -1003,7 +1003,7 @@ describe("Authorizer Spans", () => { domain_name: "4dyr9xqip7.execute-api.eu-west-1.amazonaws.com", endpoint: "/dev/hi", "http.method": "GET", - "http.url": "4dyr9xqip7.execute-api.eu-west-1.amazonaws.com/dev/hi", + "http.url": "https://4dyr9xqip7.execute-api.eu-west-1.amazonaws.com/dev/hi", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", request_id: undefined, @@ -1032,7 +1032,7 @@ describe("Authorizer Spans", () => { domain_name: "l9flvsey83.execute-api.eu-west-1.amazonaws.com", endpoint: "/hello", "http.method": "GET", - "http.url": "l9flvsey83.execute-api.eu-west-1.amazonaws.com/hello", + "http.url": "https://l9flvsey83.execute-api.eu-west-1.amazonaws.com/hello", operation_name: "aws.httpapi", "peer.service": "mock-lambda-service", request_id: undefined, @@ -1061,7 +1061,7 @@ describe("Authorizer Spans", () => { domain_name: "l9flvsey83.execute-api.eu-west-1.amazonaws.com", endpoint: "/hello", "http.method": "GET", - "http.url": "l9flvsey83.execute-api.eu-west-1.amazonaws.com/hello", + "http.url": "https://l9flvsey83.execute-api.eu-west-1.amazonaws.com/hello", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", request_id: undefined, @@ -1090,7 +1090,7 @@ describe("Authorizer Spans", () => { connection_id: "ahVWscZqmjQCI1w=", endpoint: "$connect", event_type: "CONNECT", - "http.url": "85fj5nw29d.execute-api.eu-west-1.amazonaws.com$connect", + "http.url": "https://85fj5nw29d.execute-api.eu-west-1.amazonaws.com$connect", message_direction: "IN", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", @@ -1114,7 +1114,7 @@ describe("Authorizer Spans", () => { connection_id: "ahVWscZqmjQCI1w=", endpoint: "$connect", event_type: "CONNECT", - "http.url": "85fj5nw29d.execute-api.eu-west-1.amazonaws.com$connect", + "http.url": "https://85fj5nw29d.execute-api.eu-west-1.amazonaws.com$connect", message_direction: "IN", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", @@ -1143,7 +1143,7 @@ describe("Authorizer Spans", () => { connection_id: "ahVWscZqmjQCI1w=", endpoint: "hello", event_type: "MESSAGE", - "http.url": "85fj5nw29d.execute-api.eu-west-1.amazonaws.comhello", + "http.url": "https://85fj5nw29d.execute-api.eu-west-1.amazonaws.comhello", message_direction: "IN", operation_name: "aws.apigateway", "peer.service": "mock-lambda-service", diff --git a/src/trace/span-inferrer.ts b/src/trace/span-inferrer.ts index 5e2af7ea..90754fdf 100644 --- a/src/trace/span-inferrer.ts +++ b/src/trace/span-inferrer.ts @@ -94,6 +94,7 @@ export class SpanInferrer { const options: SpanOptions = {}; const domain = event.requestContext.domainName || ""; const path = event.rawPath || event.requestContext.path || event.requestContext.routeKey; + const httpUrl = `https://${domain}${path}`; const resourcePath = this.getResourcePath(event); let method; @@ -108,7 +109,7 @@ export class SpanInferrer { options.tags = { operation_name: "aws.apigateway", - "http.url": domain + path, + "http.url": httpUrl, endpoint: path, resource_names: resourceName, request_id: context?.awsRequestId, @@ -193,6 +194,7 @@ export class SpanInferrer { const options: SpanOptions = {}; const domain: string = event.requestContext.domainName || ""; const path = event.rawPath; + const httpUrl = `https://${domain}${path}`; let method; if (event.requestContext.httpMethod) { method = event.requestContext.httpMethod; @@ -205,7 +207,7 @@ export class SpanInferrer { options.tags = { operation_name: "aws.lambda.url", - "http.url": domain + path, + "http.url": httpUrl, endpoint: path, "http.method": event.requestContext.http.method, resource_names: resourceName, diff --git a/src/trace/trigger.spec.ts b/src/trace/trigger.spec.ts index 63e0c08d..edf5ad84 100644 --- a/src/trace/trigger.spec.ts +++ b/src/trace/trigger.spec.ts @@ -14,7 +14,7 @@ describe("parseEventSource", () => { result: { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-east-1::/restapis/id/stages/$default", - "http.url": "id.execute-api.us-east-1.amazonaws.com", + "http.url": "https://id.execute-api.us-east-1.amazonaws.com", "http.url_details.path": "/my/path", "http.method": "GET", "http.route": "/my/path", @@ -25,7 +25,7 @@ describe("parseEventSource", () => { result: { "function_trigger.event_source": "api-gateway", "function_trigger.event_source_arn": "arn:aws:apigateway:us-east-1::/restapis/r3pmxmplak/stages/default", - "http.url": "r3pmxmplak.execute-api.us-east-2.amazonaws.com", + "http.url": "https://r3pmxmplak.execute-api.us-east-2.amazonaws.com", "http.url_details.path": "/default/nodejs-apig-function-1G3XMPLZXVXYI", "http.method": "GET", "http.route": "/nodejs-apig-function-1G3XMPLZXVXYI", @@ -35,7 +35,7 @@ describe("parseEventSource", () => { { result: { "function_trigger.event_source": "lambda-function-url", - "http.url": "a8hyhsshac.lambda-url.eu-south-1.amazonaws.com", + "http.url": "https://a8hyhsshac.lambda-url.eu-south-1.amazonaws.com", "http.url_details.path": "/", "http.method": "GET", }, diff --git a/src/trace/trigger.ts b/src/trace/trigger.ts index 4dbb2e24..af9524e6 100644 --- a/src/trace/trigger.ts +++ b/src/trace/trigger.ts @@ -289,7 +289,7 @@ function extractHTTPTags(event: APIGatewayEvent | APIGatewayProxyEventV2 | ALBEv if (eventType.isAPIGatewayEvent(event)) { const requestContext = event.requestContext; if (requestContext.domainName) { - httpTags["http.url"] = requestContext.domainName; + httpTags["http.url"] = `https://${requestContext.domainName}`; } httpTags["http.url_details.path"] = requestContext.path; httpTags["http.method"] = requestContext.httpMethod; @@ -304,7 +304,7 @@ function extractHTTPTags(event: APIGatewayEvent | APIGatewayProxyEventV2 | ALBEv if (eventType.isAPIGatewayEventV2(event)) { const requestContext = event.requestContext; - httpTags["http.url"] = requestContext.domainName; + httpTags["http.url"] = `https://${requestContext.domainName}`; httpTags["http.url_details.path"] = requestContext.http.path; httpTags["http.method"] = requestContext.http.method; if (event.headers?.Referer) { @@ -330,7 +330,7 @@ function extractHTTPTags(event: APIGatewayEvent | APIGatewayProxyEventV2 | ALBEv if (eventType.isLambdaUrlEvent(event)) { const requestContext = event.requestContext; if (requestContext.domainName) { - httpTags["http.url"] = requestContext.domainName; + httpTags["http.url"] = `https://${requestContext.domainName}`; } httpTags["http.url_details.path"] = requestContext.http.path; httpTags["http.method"] = requestContext.http.method;