Skip to content

Commit 1a7af45

Browse files
M-ElsaeedMohammed Ehab
andcommitted
Make Trace ID accessible through Context (#101)
* Make Trace ID accessible through Context * Change Constructor --------- Co-authored-by: Mohammed Ehab <moehabe@amazon.com>
1 parent 3ac07d0 commit 1a7af45

File tree

10 files changed

+33
-8
lines changed

10 files changed

+33
-8
lines changed

.github/workflows/runtime-interface-client_pr.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,6 @@ jobs:
2727
working-directory: ./aws-lambda-java-core
2828
run: mvn clean install
2929

30-
- name: Build and install serialization dependency locally
31-
working-directory: ./aws-lambda-java-serialization
32-
run: mvn clean install -DskipTests
33-
3430
- name: Build and install serialization dependency locally
3531
working-directory: ./aws-lambda-java-serialization
3632
run: mvn clean install
@@ -62,6 +58,10 @@ jobs:
6258

6359
- name: Available buildx platforms
6460
run: echo ${{ steps.buildx.outputs.platforms }}
61+
62+
- name: Build and install core dependency locally
63+
working-directory: ./aws-lambda-java-core
64+
run: mvn clean install
6565

6666
- name: Build and install serialization dependency locally
6767
working-directory: ./aws-lambda-java-serialization

aws-lambda-java-core/RELEASE.CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
### September 3, 2025
2+
`1.4.0`
3+
- Getter support for x-ray trace ID through the Context object
4+
15
### May 26, 2025
26
`1.3.0`
37
- Adding support for multi tenancy ([#545](https://github.com/aws/aws-lambda-java-libs/pull/545))

aws-lambda-java-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>com.amazonaws</groupId>
77
<artifactId>aws-lambda-java-core</artifactId>
8-
<version>1.3.0</version>
8+
<version>1.4.0</version>
99
<packaging>jar</packaging>
1010

1111
<name>AWS Lambda Java Core Library</name>

aws-lambda-java-core/src/main/java/com/amazonaws/services/lambda/runtime/Context.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,4 +109,14 @@ public interface Context {
109109
default String getTenantId() {
110110
return null;
111111
}
112+
113+
/**
114+
*
115+
* Returns the X-Ray trace ID associated with the request.
116+
*
117+
* @return null by default
118+
*/
119+
default String getXrayTraceId() {
120+
return null;
121+
}
112122
}

aws-lambda-java-runtime-interface-client/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
<dependency>
6262
<groupId>com.amazonaws</groupId>
6363
<artifactId>aws-lambda-java-core</artifactId>
64-
<version>1.3.0</version>
64+
<version>1.4.0</version>
6565
</dependency>
6666
<dependency>
6767
<groupId>com.amazonaws</groupId>

aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/EventHandlerLoader.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,7 @@ public ByteArrayOutputStream call(InvocationRequest request) throws Error, Excep
583583
LambdaEnvironment.FUNCTION_VERSION,
584584
request.getInvokedFunctionArn(),
585585
request.getTenantId(),
586+
request.getXrayTraceId(),
586587
clientContext
587588
);
588589

aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/api/LambdaContext.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class LambdaContext implements Context {
2323
private final CognitoIdentity cognitoIdentity;
2424
private final ClientContext clientContext;
2525
private final String tenantId;
26+
private final String xrayTraceId;
2627
private final LambdaLogger logger;
2728

2829
public LambdaContext(
@@ -36,6 +37,7 @@ public LambdaContext(
3637
String functionVersion,
3738
String invokedFunctionArn,
3839
String tenantId,
40+
String xrayTraceId,
3941
ClientContext clientContext
4042
) {
4143
this.memoryLimit = memoryLimit;
@@ -49,6 +51,7 @@ public LambdaContext(
4951
this.functionVersion = functionVersion;
5052
this.invokedFunctionArn = invokedFunctionArn;
5153
this.tenantId = tenantId;
54+
this.xrayTraceId = xrayTraceId;
5255
this.logger = com.amazonaws.services.lambda.runtime.LambdaRuntime.getLogger();
5356
}
5457

@@ -98,6 +101,10 @@ public String getTenantId() {
98101
return tenantId;
99102
}
100103

104+
public String getXrayTraceId() {
105+
return xrayTraceId;
106+
}
107+
101108
public LambdaLogger getLogger() {
102109
return logger;
103110
}

aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/api/LambdaContextTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class LambdaContextTest {
1919
private static final LambdaClientContext CLIENT_CONTEXT = new LambdaClientContext();
2020
public static final int MEMORY_LIMIT = 128;
2121
public static final String TENANT_ID = "tenant-id";
22+
public static final String X_RAY_TRACE_ID = "x-ray-trace-id";
2223

2324
@Test
2425
public void getRemainingTimeInMillis() {
@@ -55,6 +56,6 @@ public void getRemainingTimeInMillis_Deadline() throws InterruptedException {
5556

5657
private LambdaContext createContextWithDeadline(long deadlineTimeInMs) {
5758
return new LambdaContext(MEMORY_LIMIT, deadlineTimeInMs, REQUEST_ID, LOG_GROUP_NAME, LOG_STREAM_NAME,
58-
FUNCTION_NAME, IDENTITY, FUNCTION_VERSION, INVOKED_FUNCTION_ARN, TENANT_ID, CLIENT_CONTEXT);
59+
FUNCTION_NAME, IDENTITY, FUNCTION_VERSION, INVOKED_FUNCTION_ARN, TENANT_ID, X_RAY_TRACE_ID, CLIENT_CONTEXT);
5960
}
6061
}

aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/AbstractLambdaLoggerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public void testMultiConcurrentLoggingWithoutLogLevelInJSON() {
8484
final int nThreads = 5;
8585
ExecutorService es = Executors.newFixedThreadPool(nThreads);
8686
for (int i = 0; i < nThreads; i++) {
87-
es.submit(() -> logger.setLambdaContext(new LambdaContext(Integer.MAX_VALUE, Long.MAX_VALUE, reqIDPrefix + Thread.currentThread().getName(), "", "", "", null, "", "", "", null)));
87+
es.submit(() -> logger.setLambdaContext(new LambdaContext(Integer.MAX_VALUE, Long.MAX_VALUE, reqIDPrefix + Thread.currentThread().getName(), "", "", "", null, "", "", "", null, null)));
8888
}
8989

9090
final int nMessages = 100_000;

aws-lambda-java-runtime-interface-client/src/test/java/com/amazonaws/services/lambda/runtime/api/client/logging/JsonLogFormatterTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ void testFormattingWithLambdaContext() {
3030
null,
3131
"function-arn",
3232
null,
33+
null,
3334
null
3435
);
3536
assertFormatsString("test log", LogLevel.WARN, context);
@@ -48,6 +49,7 @@ void testFormattingWithTenantIdInLambdaContext() {
4849
null,
4950
"function-arn",
5051
"tenant-id",
52+
"xray-trace-id",
5153
null
5254
);
5355
assertFormatsString("test log", LogLevel.WARN, context);

0 commit comments

Comments
 (0)