diff --git a/Sources/AWSLambdaRuntime/Lambda.swift b/Sources/AWSLambdaRuntime/Lambda.swift index e38851c0..5412c139 100644 --- a/Sources/AWSLambdaRuntime/Lambda.swift +++ b/Sources/AWSLambdaRuntime/Lambda.swift @@ -44,6 +44,24 @@ 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 + let maxPayloadPreviewSize = 1024 + var metadata: Logger.Metadata? = nil + 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 ? "..." : "") + ) + ] + } + logger.trace( + "Sending invocation event to lambda handler", + metadata: metadata + ) + do { try await handler.handle( invocation.event,