From 97bd44d34dca089a4b468220be121ede1185454f Mon Sep 17 00:00:00 2001 From: kimi Date: Wed, 22 May 2024 21:32:26 -0400 Subject: [PATCH 01/12] Use Sha256 to hash StepFunctions trace context --- datadog_lambda/tracing.py | 26 +++++++++++++++++--------- tests/test_tracing.py | 21 ++++++++++++++------- 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 73ac1e5c..406cfde5 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -354,14 +354,18 @@ def extract_context_from_kinesis_event(event, lambda_context): return extract_context_from_lambda_context(lambda_context) -def _deterministic_md5_hash(s: str) -> int: +def _deterministic_md5_hash(s: str, bits: int) -> (int, int): """MD5 here is to generate trace_id, not for any encryption.""" - hex_number = hashlib.md5(s.encode("ascii")).hexdigest() - binary = bin(int(hex_number, 16)) - binary_str = str(binary) - binary_str_remove_0b = binary_str[2:].rjust(128, "0") - most_significant_64_bits_without_leading_1 = "0" + binary_str_remove_0b[1:-64] - result = int(most_significant_64_bits_without_leading_1, 2) + sha256_hash = hashlib.sha256(s.encode()).hexdigest() + + # First two chars is '0b'. zfill to ensure 256 bits + binary_hash = bin(int(sha256_hash, 16))[2:].zfill(256) + if bits == 64: + updated_binary_hash = '0' + binary_hash[1: 64] + else: # bits == 128 + # set 1st and 65th bit to '0' + updated_binary_hash = '0' + binary_hash[1: 64] + '0' + binary_hash[65: 128] + result = int(updated_binary_hash, 2) if result == 0: return 1 return result @@ -376,9 +380,13 @@ def extract_context_from_step_functions(event, lambda_context): execution_id = event.get("Execution").get("Id") state_name = event.get("State").get("Name") state_entered_time = event.get("State").get("EnteredTime") - trace_id = _deterministic_md5_hash(execution_id) + # returning 128 bits since 128bit traceId will be break up into + # traditional traceId and _dd.p.tid tag + # https://github.com/DataDog/dd-trace-py/blob/3e34d21cb9b5e1916e549047158cb119317b96ab/ddtrace/propagation/http.py#L232-L240 + trace_id = _deterministic_md5_hash(execution_id, 128) + parent_id = _deterministic_md5_hash( - f"{execution_id}#{state_name}#{state_entered_time}" + f"{execution_id}#{state_name}#{state_entered_time}", 64 ) sampling_priority = SamplingPriority.AUTO_KEEP return Context( diff --git a/tests/test_tracing.py b/tests/test_tracing.py index a810eb8a..151358ad 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1992,19 +1992,26 @@ def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_ class TestStepFunctionsTraceContext(unittest.TestCase): def test_deterministic_m5_hash(self): - result = _deterministic_md5_hash("some_testing_random_string") - self.assertEqual(2251275791555400689, result) + result = _deterministic_md5_hash("some_testing_random_string", 128) + self.assertEqual(80506605202309154694697844088692857990, result) - def test_deterministic_m5_hash__result_the_same_as_backend(self): + def test_deterministic_m5_hash__result_the_same_as_backend_1(self): result = _deterministic_md5_hash( - "arn:aws:states:sa-east-1:601427271234:express:DatadogStateMachine:acaf1a67-336a-e854-1599-2a627eb2dd8a" - ":c8baf081-31f1-464d-971f-70cb17d01111#step-one#2022-12-08T21:08:19.224Z" + "arn:aws:states:sa-east-1:425362996713:stateMachine:MyStateMachine-b276uka1j" + "#lambda#1", 64 ) - self.assertEqual(8034507082463708833, result) + self.assertEqual(3711631873188331089, result) + + def test_deterministic_m5_hash__result_the_same_as_backend_2(self): + result = _deterministic_md5_hash( + "arn:aws:states:sa-east-1:425362996713:stateMachine:MyStateMachine-b276uka1j" + "#lambda#2", 64 + ) + self.assertEqual(5759173372325510050, result) def test_deterministic_m5_hash__always_leading_with_zero(self): for i in range(100): - result = _deterministic_md5_hash(str(i)) + result = _deterministic_md5_hash(str(i), 64) result_in_binary = bin(int(result)) # Leading zeros will be omitted, so only test for full 64 bits present if len(result_in_binary) == 66: # "0b" + 64 bits. From 0fcfec6aca880b16e28566538251e17d4e92d7b4 Mon Sep 17 00:00:00 2001 From: kimi Date: Wed, 22 May 2024 22:57:39 -0400 Subject: [PATCH 02/12] this works --- datadog_lambda/tracing.py | 28 +++++++++++++++++----------- tests/test_tracing.py | 10 +++++----- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 406cfde5..e6a5e5b7 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -72,7 +72,8 @@ propagator = HTTPPropagator() DD_TRACE_JAVA_TRACE_ID_PADDING = "00000000" - +HIGHER_64_BITS = "HIGHER_64_BITS" +LOWER_64_BITS = "LOWER_64_BITS" def _convert_xray_trace_id(xray_trace_id): """ @@ -354,17 +355,16 @@ def extract_context_from_kinesis_event(event, lambda_context): return extract_context_from_lambda_context(lambda_context) -def _deterministic_md5_hash(s: str, bits: int) -> (int, int): +def _deterministic_sha256_hash(s: str, part: str) -> (int, int): """MD5 here is to generate trace_id, not for any encryption.""" sha256_hash = hashlib.sha256(s.encode()).hexdigest() - # First two chars is '0b'. zfill to ensure 256 bits + # First two chars is '0b'. zfill to ensure 256 bits, but we only care about the first 128 bits binary_hash = bin(int(sha256_hash, 16))[2:].zfill(256) - if bits == 64: + if part == HIGHER_64_BITS: updated_binary_hash = '0' + binary_hash[1: 64] - else: # bits == 128 - # set 1st and 65th bit to '0' - updated_binary_hash = '0' + binary_hash[1: 64] + '0' + binary_hash[65: 128] + else: + updated_binary_hash = '0' + binary_hash[65: 128] result = int(updated_binary_hash, 2) if result == 0: return 1 @@ -383,14 +383,20 @@ def extract_context_from_step_functions(event, lambda_context): # returning 128 bits since 128bit traceId will be break up into # traditional traceId and _dd.p.tid tag # https://github.com/DataDog/dd-trace-py/blob/3e34d21cb9b5e1916e549047158cb119317b96ab/ddtrace/propagation/http.py#L232-L240 - trace_id = _deterministic_md5_hash(execution_id, 128) + trace_id = _deterministic_sha256_hash(execution_id, LOWER_64_BITS) - parent_id = _deterministic_md5_hash( - f"{execution_id}#{state_name}#{state_entered_time}", 64 + parent_id = _deterministic_sha256_hash( + f"{execution_id}#{state_name}#{state_entered_time}", HIGHER_64_BITS ) + print(f"trace_id: ${trace_id}") + print(f"parent_id: ${parent_id}") + print(f"_dd.p.tid: ${hex(_deterministic_sha256_hash(execution_id, HIGHER_64_BITS))[2:]}") + sampling_priority = SamplingPriority.AUTO_KEEP return Context( - trace_id=trace_id, span_id=parent_id, sampling_priority=sampling_priority + trace_id=trace_id, span_id=parent_id, sampling_priority=sampling_priority, + # take the higher 64 bits as _dd.p.tid tag and use hex to encode + meta={"_dd.p.tid": hex(_deterministic_sha256_hash(execution_id, HIGHER_64_BITS))[2:]} ) except Exception as e: logger.debug("The Step Functions trace extractor returned with error %s", e) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 151358ad..b64bfc59 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -20,7 +20,7 @@ XraySubsegment, ) from datadog_lambda.tracing import ( - _deterministic_md5_hash, + _deterministic_sha256_hash, create_inferred_span, extract_dd_trace_context, create_dd_dummy_metadata_subsegment, @@ -1992,18 +1992,18 @@ def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_ class TestStepFunctionsTraceContext(unittest.TestCase): def test_deterministic_m5_hash(self): - result = _deterministic_md5_hash("some_testing_random_string", 128) + result = _deterministic_sha256_hash("some_testing_random_string", 128) self.assertEqual(80506605202309154694697844088692857990, result) def test_deterministic_m5_hash__result_the_same_as_backend_1(self): - result = _deterministic_md5_hash( + result = _deterministic_sha256_hash( "arn:aws:states:sa-east-1:425362996713:stateMachine:MyStateMachine-b276uka1j" "#lambda#1", 64 ) self.assertEqual(3711631873188331089, result) def test_deterministic_m5_hash__result_the_same_as_backend_2(self): - result = _deterministic_md5_hash( + result = _deterministic_sha256_hash( "arn:aws:states:sa-east-1:425362996713:stateMachine:MyStateMachine-b276uka1j" "#lambda#2", 64 ) @@ -2011,7 +2011,7 @@ def test_deterministic_m5_hash__result_the_same_as_backend_2(self): def test_deterministic_m5_hash__always_leading_with_zero(self): for i in range(100): - result = _deterministic_md5_hash(str(i), 64) + result = _deterministic_sha256_hash(str(i), 64) result_in_binary = bin(int(result)) # Leading zeros will be omitted, so only test for full 64 bits present if len(result_in_binary) == 66: # "0b" + 64 bits. From 03d1f9efea2201679b1c129711d3fb4f13ba4de4 Mon Sep 17 00:00:00 2001 From: kimi Date: Thu, 23 May 2024 11:38:51 -0400 Subject: [PATCH 03/12] update tests --- tests/test_tracing.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index b64bfc59..6a50406d 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -20,7 +20,7 @@ XraySubsegment, ) from datadog_lambda.tracing import ( - _deterministic_sha256_hash, + HIGHER_64_BITS, LOWER_64_BITS, _deterministic_sha256_hash, create_inferred_span, extract_dd_trace_context, create_dd_dummy_metadata_subsegment, @@ -1992,20 +1992,20 @@ def test_mark_trace_as_error_for_5xx_responses_sends_error_metric_and_set_error_ class TestStepFunctionsTraceContext(unittest.TestCase): def test_deterministic_m5_hash(self): - result = _deterministic_sha256_hash("some_testing_random_string", 128) - self.assertEqual(80506605202309154694697844088692857990, result) + result = _deterministic_sha256_hash("some_testing_random_string", LOWER_64_BITS) + self.assertEqual(7456137785171041414, result) def test_deterministic_m5_hash__result_the_same_as_backend_1(self): result = _deterministic_sha256_hash( "arn:aws:states:sa-east-1:425362996713:stateMachine:MyStateMachine-b276uka1j" - "#lambda#1", 64 + "#lambda#1", HIGHER_64_BITS ) self.assertEqual(3711631873188331089, result) def test_deterministic_m5_hash__result_the_same_as_backend_2(self): result = _deterministic_sha256_hash( "arn:aws:states:sa-east-1:425362996713:stateMachine:MyStateMachine-b276uka1j" - "#lambda#2", 64 + "#lambda#2", HIGHER_64_BITS ) self.assertEqual(5759173372325510050, result) From 05c043a837e9715d4be9642b5a289628b87048fa Mon Sep 17 00:00:00 2001 From: kimi Date: Thu, 23 May 2024 11:40:02 -0400 Subject: [PATCH 04/12] format --- datadog_lambda/tracing.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index e6a5e5b7..56f20216 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -75,6 +75,7 @@ HIGHER_64_BITS = "HIGHER_64_BITS" LOWER_64_BITS = "LOWER_64_BITS" + def _convert_xray_trace_id(xray_trace_id): """ Convert X-Ray trace id (hex)'s last 63 bits to a Datadog trace id (int). @@ -362,9 +363,9 @@ def _deterministic_sha256_hash(s: str, part: str) -> (int, int): # First two chars is '0b'. zfill to ensure 256 bits, but we only care about the first 128 bits binary_hash = bin(int(sha256_hash, 16))[2:].zfill(256) if part == HIGHER_64_BITS: - updated_binary_hash = '0' + binary_hash[1: 64] + updated_binary_hash = "0" + binary_hash[1:64] else: - updated_binary_hash = '0' + binary_hash[65: 128] + updated_binary_hash = "0" + binary_hash[65:128] result = int(updated_binary_hash, 2) if result == 0: return 1 @@ -390,13 +391,21 @@ def extract_context_from_step_functions(event, lambda_context): ) print(f"trace_id: ${trace_id}") print(f"parent_id: ${parent_id}") - print(f"_dd.p.tid: ${hex(_deterministic_sha256_hash(execution_id, HIGHER_64_BITS))[2:]}") + print( + f"_dd.p.tid: ${hex(_deterministic_sha256_hash(execution_id, HIGHER_64_BITS))[2:]}" + ) sampling_priority = SamplingPriority.AUTO_KEEP return Context( - trace_id=trace_id, span_id=parent_id, sampling_priority=sampling_priority, + trace_id=trace_id, + span_id=parent_id, + sampling_priority=sampling_priority, # take the higher 64 bits as _dd.p.tid tag and use hex to encode - meta={"_dd.p.tid": hex(_deterministic_sha256_hash(execution_id, HIGHER_64_BITS))[2:]} + meta={ + "_dd.p.tid": hex( + _deterministic_sha256_hash(execution_id, HIGHER_64_BITS) + )[2:] + }, ) except Exception as e: logger.debug("The Step Functions trace extractor returned with error %s", e) @@ -1260,9 +1269,9 @@ def create_function_execution_span( "function_version": function_version, "request_id": context.aws_request_id, "resource_names": context.function_name, - "functionname": context.function_name.lower() - if context.function_name - else None, + "functionname": ( + context.function_name.lower() if context.function_name else None + ), "datadog_lambda": datadog_lambda_version, "dd_trace": ddtrace_version, "span.name": "aws.lambda", From 3684c9d07c7e62ea38ecef54d2009bccc4e8536e Mon Sep 17 00:00:00 2001 From: kimi Date: Thu, 23 May 2024 11:44:52 -0400 Subject: [PATCH 05/12] format --- tests/test_tracing.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 6a50406d..08f7670f 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1998,14 +1998,16 @@ def test_deterministic_m5_hash(self): def test_deterministic_m5_hash__result_the_same_as_backend_1(self): result = _deterministic_sha256_hash( "arn:aws:states:sa-east-1:425362996713:stateMachine:MyStateMachine-b276uka1j" - "#lambda#1", HIGHER_64_BITS + "#lambda#1", + HIGHER_64_BITS ) self.assertEqual(3711631873188331089, result) def test_deterministic_m5_hash__result_the_same_as_backend_2(self): result = _deterministic_sha256_hash( "arn:aws:states:sa-east-1:425362996713:stateMachine:MyStateMachine-b276uka1j" - "#lambda#2", HIGHER_64_BITS + "#lambda#2", + HIGHER_64_BITS ) self.assertEqual(5759173372325510050, result) From d3e6873e5809f01aafe7c1688585385ea096fa4a Mon Sep 17 00:00:00 2001 From: kimi Date: Thu, 23 May 2024 12:36:21 -0400 Subject: [PATCH 06/12] lint --- tests/test_tracing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 08f7670f..e1a70788 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -1999,7 +1999,7 @@ def test_deterministic_m5_hash__result_the_same_as_backend_1(self): result = _deterministic_sha256_hash( "arn:aws:states:sa-east-1:425362996713:stateMachine:MyStateMachine-b276uka1j" "#lambda#1", - HIGHER_64_BITS + HIGHER_64_BITS, ) self.assertEqual(3711631873188331089, result) @@ -2007,7 +2007,7 @@ def test_deterministic_m5_hash__result_the_same_as_backend_2(self): result = _deterministic_sha256_hash( "arn:aws:states:sa-east-1:425362996713:stateMachine:MyStateMachine-b276uka1j" "#lambda#2", - HIGHER_64_BITS + HIGHER_64_BITS, ) self.assertEqual(5759173372325510050, result) From 68bd952790c407342dc6ec200fbacdea5979bcd2 Mon Sep 17 00:00:00 2001 From: kimi Date: Thu, 23 May 2024 12:37:37 -0400 Subject: [PATCH 07/12] lint --- tests/test_tracing.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_tracing.py b/tests/test_tracing.py index e1a70788..18791950 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -20,7 +20,9 @@ XraySubsegment, ) from datadog_lambda.tracing import ( - HIGHER_64_BITS, LOWER_64_BITS, _deterministic_sha256_hash, + HIGHER_64_BITS, + LOWER_64_BITS, + _deterministic_sha256_hash, create_inferred_span, extract_dd_trace_context, create_dd_dummy_metadata_subsegment, From c8ca27aa5fbe617565d8f18574ae2f3de83d4e3e Mon Sep 17 00:00:00 2001 From: kimi Date: Thu, 23 May 2024 12:47:23 -0400 Subject: [PATCH 08/12] fix sqs test for step function --- datadog_lambda/tracing.py | 6 +++--- tests/test_tracing.py | 12 +++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 56f20216..681baf5e 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -389,10 +389,10 @@ def extract_context_from_step_functions(event, lambda_context): parent_id = _deterministic_sha256_hash( f"{execution_id}#{state_name}#{state_entered_time}", HIGHER_64_BITS ) - print(f"trace_id: ${trace_id}") - print(f"parent_id: ${parent_id}") + print(f"trace_id: {trace_id}") + print(f"parent_id: {parent_id}") print( - f"_dd.p.tid: ${hex(_deterministic_sha256_hash(execution_id, HIGHER_64_BITS))[2:]}" + f"_dd.p.tid: {hex(_deterministic_sha256_hash(execution_id, HIGHER_64_BITS))[2:]}" ) sampling_priority = SamplingPriority.AUTO_KEEP diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 18791950..3fcf7619 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -626,18 +626,20 @@ def test_step_function_trace_data(self): ctx, source, event_source = extract_dd_trace_context(sqs_event, lambda_ctx) self.assertEqual(source, "event") expected_context = Context( - trace_id=1074655265866231755, - span_id=4776286484851030060, + trace_id=3675572987363469717, + span_id=6880978411788117524, sampling_priority=1, + meta={'_dd.p.tid': 'e987c84b36b11ab'} ) self.assertEqual(ctx, expected_context) self.assertEqual( get_dd_trace_context(), { - TraceHeader.TRACE_ID: "1074655265866231755", - TraceHeader.PARENT_ID: fake_xray_header_value_parent_decimal, + TraceHeader.TRACE_ID: "3675572987363469717", + TraceHeader.PARENT_ID: "10713633173203262661", TraceHeader.SAMPLING_PRIORITY: "1", - }, + "x-datadog-tags": '_dd.p.tid=e987c84b36b11ab' + } ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) self.mock_send_segment.assert_called_with( From f93c20de0cbb315692667ca99ef19dc447cd2708 Mon Sep 17 00:00:00 2001 From: kimi Date: Thu, 23 May 2024 12:53:56 -0400 Subject: [PATCH 09/12] lint --- datadog_lambda/tracing.py | 5 ----- tests/test_tracing.py | 6 +++--- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 681baf5e..48c07e2f 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -389,11 +389,6 @@ def extract_context_from_step_functions(event, lambda_context): parent_id = _deterministic_sha256_hash( f"{execution_id}#{state_name}#{state_entered_time}", HIGHER_64_BITS ) - print(f"trace_id: {trace_id}") - print(f"parent_id: {parent_id}") - print( - f"_dd.p.tid: {hex(_deterministic_sha256_hash(execution_id, HIGHER_64_BITS))[2:]}" - ) sampling_priority = SamplingPriority.AUTO_KEEP return Context( diff --git a/tests/test_tracing.py b/tests/test_tracing.py index 3fcf7619..b94e968f 100644 --- a/tests/test_tracing.py +++ b/tests/test_tracing.py @@ -629,7 +629,7 @@ def test_step_function_trace_data(self): trace_id=3675572987363469717, span_id=6880978411788117524, sampling_priority=1, - meta={'_dd.p.tid': 'e987c84b36b11ab'} + meta={"_dd.p.tid": "e987c84b36b11ab"}, ) self.assertEqual(ctx, expected_context) self.assertEqual( @@ -638,8 +638,8 @@ def test_step_function_trace_data(self): TraceHeader.TRACE_ID: "3675572987363469717", TraceHeader.PARENT_ID: "10713633173203262661", TraceHeader.SAMPLING_PRIORITY: "1", - "x-datadog-tags": '_dd.p.tid=e987c84b36b11ab' - } + "x-datadog-tags": "_dd.p.tid=e987c84b36b11ab", + }, ) create_dd_dummy_metadata_subsegment(ctx, XraySubsegment.TRACE_KEY) self.mock_send_segment.assert_called_with( From 92384ea69de1894063f5eb076be2af520a9194b3 Mon Sep 17 00:00:00 2001 From: kimi Date: Thu, 23 May 2024 12:54:54 -0400 Subject: [PATCH 10/12] add comment --- datadog_lambda/tracing.py | 1 + 1 file changed, 1 insertion(+) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 48c07e2f..5df38257 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -396,6 +396,7 @@ def extract_context_from_step_functions(event, lambda_context): span_id=parent_id, sampling_priority=sampling_priority, # take the higher 64 bits as _dd.p.tid tag and use hex to encode + # [2:] to remove '0x' in the hex str meta={ "_dd.p.tid": hex( _deterministic_sha256_hash(execution_id, HIGHER_64_BITS) From de5004d975c297838c68eed56992aa67c1aa33e2 Mon Sep 17 00:00:00 2001 From: kimi Date: Thu, 23 May 2024 13:13:47 -0400 Subject: [PATCH 11/12] pin serverless to v3 --- ci/input_files/build.yaml.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/input_files/build.yaml.tpl b/ci/input_files/build.yaml.tpl index 57f9ff0e..97e5987f 100644 --- a/ci/input_files/build.yaml.tpl +++ b/ci/input_files/build.yaml.tpl @@ -97,7 +97,7 @@ integration-test ({{ $runtime.name }}-{{ $runtime.arch }}): before_script: - *install-node - EXTERNAL_ID_NAME=integration-test-externalid ROLE_TO_ASSUME=sandbox-integration-test-deployer AWS_ACCOUNT=425362996713 source ./ci/get_secrets.sh - - yarn global add serverless --prefix /usr/local + - yarn global add serverless@^3.38.0 --prefix /usr/local - cd integration_tests && yarn install && cd .. script: - RUNTIME_PARAM={{ $runtime.python_version }} ARCH={{ $runtime.arch }} ./scripts/run_integration_tests.sh From 51b272dd04d250aa4aa1ede77b7ebf00365dab48 Mon Sep 17 00:00:00 2001 From: kimi Date: Thu, 23 May 2024 13:21:06 -0400 Subject: [PATCH 12/12] remove md5 comment --- datadog_lambda/tracing.py | 1 - 1 file changed, 1 deletion(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 5df38257..64a19ccd 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -357,7 +357,6 @@ def extract_context_from_kinesis_event(event, lambda_context): def _deterministic_sha256_hash(s: str, part: str) -> (int, int): - """MD5 here is to generate trace_id, not for any encryption.""" sha256_hash = hashlib.sha256(s.encode()).hexdigest() # First two chars is '0b'. zfill to ensure 256 bits, but we only care about the first 128 bits