From 33cec707bf27f07b25d9566cbec20e7287ce17d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Stormacq?= Date: Mon, 21 Jul 2025 08:59:39 +0200 Subject: [PATCH 1/4] fix : #404 : trace level shows the first kb of the payload before being decoded --- Sources/AWSLambdaRuntime/Lambda.swift | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Sources/AWSLambdaRuntime/Lambda.swift b/Sources/AWSLambdaRuntime/Lambda.swift index e38851c0..52258dad 100644 --- a/Sources/AWSLambdaRuntime/Lambda.swift +++ b/Sources/AWSLambdaRuntime/Lambda.swift @@ -44,6 +44,21 @@ public enum Lambda { let (invocation, writer) = try await runtimeClient.nextInvocation() logger[metadataKey: "aws-request-id"] = "\(invocation.metadata.requestID)" + // when log level is trace or lower, print the first Kb of the payload + let bytes = invocation.event + var metadata: Logger.Metadata? = nil + if logger.logLevel <= .trace, + let buffer = bytes.getSlice(at: 0, length: min(bytes.readableBytes, 1024)) + { + metadata = [ + "Event's first bytes": .string(String(buffer: buffer) + (bytes.readableBytes > 1024 ? "..." : "")) + ] + } + logger.trace( + "Sending invocation event to lambda handler", + metadata: metadata + ) + do { try await handler.handle( invocation.event, From ab5d58e4a46b4c593bfc34e8d5a7bf94ff6cd9fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Stormacq?= Date: Mon, 21 Jul 2025 09:04:57 +0200 Subject: [PATCH 2/4] DRY 1024 Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Sources/AWSLambdaRuntime/Lambda.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/AWSLambdaRuntime/Lambda.swift b/Sources/AWSLambdaRuntime/Lambda.swift index 52258dad..9e4aac39 100644 --- a/Sources/AWSLambdaRuntime/Lambda.swift +++ b/Sources/AWSLambdaRuntime/Lambda.swift @@ -48,10 +48,10 @@ public enum Lambda { let bytes = invocation.event var metadata: Logger.Metadata? = nil if logger.logLevel <= .trace, - let buffer = bytes.getSlice(at: 0, length: min(bytes.readableBytes, 1024)) + let buffer = bytes.getSlice(at: 0, length: min(bytes.readableBytes, maxPayloadPreviewSize)) { metadata = [ - "Event's first bytes": .string(String(buffer: buffer) + (bytes.readableBytes > 1024 ? "..." : "")) + "Event's first bytes": .string(String(buffer: buffer) + (bytes.readableBytes > maxPayloadPreviewSize ? "..." : "")) ] } logger.trace( From de88eb5dd3562bf846b8f8689abd63399678f7bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Stormacq?= Date: Mon, 21 Jul 2025 09:05:42 +0200 Subject: [PATCH 3/4] define constant forgotten by copilot --- Sources/AWSLambdaRuntime/Lambda.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Sources/AWSLambdaRuntime/Lambda.swift b/Sources/AWSLambdaRuntime/Lambda.swift index 9e4aac39..e78cd887 100644 --- a/Sources/AWSLambdaRuntime/Lambda.swift +++ b/Sources/AWSLambdaRuntime/Lambda.swift @@ -46,6 +46,7 @@ public enum Lambda { // when log level is trace or lower, print the first Kb of the payload let bytes = invocation.event + let maxPayloadPreviewSize = 1024 var metadata: Logger.Metadata? = nil if logger.logLevel <= .trace, let buffer = bytes.getSlice(at: 0, length: min(bytes.readableBytes, maxPayloadPreviewSize)) From 96fd150fa398e69a2c2544f2ffb638ee5c51a703 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Stormacq?= Date: Mon, 21 Jul 2025 09:07:37 +0200 Subject: [PATCH 4/4] swift-format --- Sources/AWSLambdaRuntime/Lambda.swift | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Sources/AWSLambdaRuntime/Lambda.swift b/Sources/AWSLambdaRuntime/Lambda.swift index e78cd887..5412c139 100644 --- a/Sources/AWSLambdaRuntime/Lambda.swift +++ b/Sources/AWSLambdaRuntime/Lambda.swift @@ -51,8 +51,10 @@ public enum Lambda { if logger.logLevel <= .trace, let buffer = bytes.getSlice(at: 0, length: min(bytes.readableBytes, maxPayloadPreviewSize)) { - metadata = [ - "Event's first bytes": .string(String(buffer: buffer) + (bytes.readableBytes > maxPayloadPreviewSize ? "..." : "")) + metadata = [ + "Event's first bytes": .string( + String(buffer: buffer) + (bytes.readableBytes > maxPayloadPreviewSize ? "..." : "") + ) ] } logger.trace(