From 77b1f0cdc8003a01e8c749d57e6aaf74dcbdbdd2 Mon Sep 17 00:00:00 2001 From: Andrey Slotin Date: Thu, 16 Jul 2020 15:57:28 +0200 Subject: [PATCH] Use the 'headers' section as a trace context carrier when Lambda function is invoked via ELB and API Gateway --- instana/instrumentation/aws/lambda_inst.py | 1 - instana/instrumentation/aws/triggers.py | 3 +++ tests/platforms/test_lambda.py | 12 ++++++------ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/instana/instrumentation/aws/lambda_inst.py b/instana/instrumentation/aws/lambda_inst.py index 630a7a8a..0342d393 100644 --- a/instana/instrumentation/aws/lambda_inst.py +++ b/instana/instrumentation/aws/lambda_inst.py @@ -14,7 +14,6 @@ def lambda_handler_with_instana(wrapped, instance, args, kwargs): event = args[0] - context = args[1] agent = get_agent() tracer = get_tracer() diff --git a/instana/instrumentation/aws/triggers.py b/instana/instrumentation/aws/triggers.py index 1bc3bf1f..9ac8b648 100644 --- a/instana/instrumentation/aws/triggers.py +++ b/instana/instrumentation/aws/triggers.py @@ -11,6 +11,9 @@ def get_context(tracer, event): # TODO: Search for more types of trigger context + if is_api_gateway_proxy_trigger(event) or is_application_load_balancer_trigger(event): + return tracer.extract('http_headers', event['headers']) + return tracer.extract('http_headers', event) diff --git a/tests/platforms/test_lambda.py b/tests/platforms/test_lambda.py index 238a2d38..b7d15faa 100644 --- a/tests/platforms/test_lambda.py +++ b/tests/platforms/test_lambda.py @@ -152,9 +152,9 @@ def test_custom_service_name(self): span = payload['spans'][0] self.assertEqual('aws.lambda.entry', span.n) - self.assertIsNotNone(span.t) + self.assertEqual('d5cb361b256413a9', span.t) self.assertIsNotNone(span.s) - self.assertIsNone(span.p) + self.assertEqual('0901d8ae4fbf1529', span.p) self.assertIsNotNone(span.ts) self.assertIsNotNone(span.d) @@ -210,9 +210,9 @@ def test_api_gateway_trigger_tracing(self): span = payload['spans'][0] self.assertEqual('aws.lambda.entry', span.n) - self.assertIsNotNone(span.t) + self.assertEqual('d5cb361b256413a9', span.t) self.assertIsNotNone(span.s) - self.assertIsNone(span.p) + self.assertEqual('0901d8ae4fbf1529', span.p) self.assertIsNotNone(span.ts) self.assertIsNotNone(span.d) @@ -267,9 +267,9 @@ def test_application_lb_trigger_tracing(self): span = payload['spans'][0] self.assertEqual('aws.lambda.entry', span.n) - self.assertIsNotNone(span.t) + self.assertEqual('d5cb361b256413a9', span.t) self.assertIsNotNone(span.s) - self.assertIsNone(span.p) + self.assertEqual('0901d8ae4fbf1529', span.p) self.assertIsNotNone(span.ts) self.assertIsNotNone(span.d)