From fd79286319f22611ada4413917f3ca85a72c9288 Mon Sep 17 00:00:00 2001 From: Steven Cook Date: Fri, 12 Sep 2025 11:26:02 +1000 Subject: [PATCH] Update dependencies and code for the latest version of Java Lambda Powertools. --- unicorn_approvals/ApprovalsService/pom.xml | 54 +++++++++++------ .../ContractStatusChangedHandlerFunction.java | 4 +- .../PropertiesApprovalSyncFunction.java | 4 +- .../WaitForContractApprovalFunction.java | 4 +- unicorn_contracts/ContractsService/pom.xml | 49 ++++++++++----- .../java/contracts/ContractEventHandler.java | 4 ++ unicorn_web/PublicationManagerService/pom.xml | 55 +++++++++++------ .../PublicationEvaluationEventHandler.java | 4 +- .../RequestApprovalFunction.java | 5 +- unicorn_web/SearchService/pom.xml | 60 ++++++++++++------- .../java/search/PropertySearchFunction.java | 7 ++- unicorn_web/pom.xml | 4 +- 12 files changed, 163 insertions(+), 91 deletions(-) diff --git a/unicorn_approvals/ApprovalsService/pom.xml b/unicorn_approvals/ApprovalsService/pom.xml index 05d471b..31f0416 100644 --- a/unicorn_approvals/ApprovalsService/pom.xml +++ b/unicorn_approvals/ApprovalsService/pom.xml @@ -1,5 +1,6 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 approval ApprovalsService @@ -7,10 +8,10 @@ jar Unicorn Approvals Service module - 17 - 17 + 21 + 21 2.32.29 - 1.20.2 + 2.4.0 3.16.1 5.18.0 4.13.2 @@ -35,6 +36,16 @@ powertools-metrics ${aws.java.powertool.version} + + software.amazon.lambda + powertools-logging-log4j + ${aws.java.powertool.version} + + + org.aspectj + aspectjrt + 1.9.22 + com.amazonaws @@ -93,7 +104,7 @@ jackson-annotations 2.18.4 - + org.apache.logging.log4j @@ -137,6 +148,7 @@ handler test-table + true @@ -165,10 +177,11 @@ dev.aspectj aspectj-maven-plugin - 1.14.1 + 1.14 - 17 - 17 + 21 + 21 + 21 software.amazon.lambda @@ -182,8 +195,20 @@ software.amazon.lambda powertools-metrics + + software.amazon.lambda + powertools-logging + + + + org.aspectj + aspectjtools + + 1.9.22 + + @@ -191,23 +216,16 @@ - - - org.aspectj - aspectjtools - 1.9.24 - - org.apache.maven.plugins maven-compiler-plugin 3.14.0 - 17 - 17 + 21 + 21 - + \ No newline at end of file diff --git a/unicorn_approvals/ApprovalsService/src/main/java/approvals/ContractStatusChangedHandlerFunction.java b/unicorn_approvals/ApprovalsService/src/main/java/approvals/ContractStatusChangedHandlerFunction.java index 0d9f089..be4a55f 100644 --- a/unicorn_approvals/ApprovalsService/src/main/java/approvals/ContractStatusChangedHandlerFunction.java +++ b/unicorn_approvals/ApprovalsService/src/main/java/approvals/ContractStatusChangedHandlerFunction.java @@ -11,8 +11,8 @@ import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.model.UpdateItemRequest; import software.amazon.lambda.powertools.logging.Logging; -import software.amazon.lambda.powertools.metrics.Metrics; import software.amazon.lambda.powertools.tracing.Tracing; +import software.amazon.lambda.powertools.metrics.FlushMetrics; import java.io.IOException; import java.io.InputStream; @@ -42,7 +42,7 @@ public class ContractStatusChangedHandlerFunction { * @throws IOException if there's an error processing the event */ @Tracing - @Metrics(captureColdStart = true) + @FlushMetrics(captureColdStart = true) @Logging(logEvent = true) public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException { logger.info("TABLE_NAME environment variable: {}", TABLE_NAME); diff --git a/unicorn_approvals/ApprovalsService/src/main/java/approvals/PropertiesApprovalSyncFunction.java b/unicorn_approvals/ApprovalsService/src/main/java/approvals/PropertiesApprovalSyncFunction.java index afcfb45..26aae01 100644 --- a/unicorn_approvals/ApprovalsService/src/main/java/approvals/PropertiesApprovalSyncFunction.java +++ b/unicorn_approvals/ApprovalsService/src/main/java/approvals/PropertiesApprovalSyncFunction.java @@ -15,7 +15,7 @@ import software.amazon.awssdk.services.sfn.SfnAsyncClient; import software.amazon.awssdk.services.sfn.model.SendTaskSuccessRequest; import software.amazon.lambda.powertools.logging.Logging; -import software.amazon.lambda.powertools.metrics.Metrics; +import software.amazon.lambda.powertools.metrics.FlushMetrics; import software.amazon.lambda.powertools.tracing.Tracing; import java.io.Serializable; @@ -40,7 +40,7 @@ public class PropertiesApprovalSyncFunction implements RequestHandler batchItemFailures = new ArrayList<>(); diff --git a/unicorn_approvals/ApprovalsService/src/main/java/approvals/WaitForContractApprovalFunction.java b/unicorn_approvals/ApprovalsService/src/main/java/approvals/WaitForContractApprovalFunction.java index c1f5f3e..bc30635 100644 --- a/unicorn_approvals/ApprovalsService/src/main/java/approvals/WaitForContractApprovalFunction.java +++ b/unicorn_approvals/ApprovalsService/src/main/java/approvals/WaitForContractApprovalFunction.java @@ -11,7 +11,7 @@ import software.amazon.awssdk.services.dynamodb.model.GetItemRequest; import software.amazon.awssdk.services.dynamodb.model.UpdateItemRequest; import software.amazon.lambda.powertools.logging.Logging; -import software.amazon.lambda.powertools.metrics.Metrics; +import software.amazon.lambda.powertools.metrics.FlushMetrics; import software.amazon.lambda.powertools.tracing.Tracing; import java.io.IOException; @@ -38,7 +38,7 @@ public class WaitForContractApprovalFunction { .build(); @Tracing - @Metrics(captureColdStart = true) + @FlushMetrics(captureColdStart = true) @Logging(logEvent = true) public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException, ContractStatusNotFoundException { diff --git a/unicorn_contracts/ContractsService/pom.xml b/unicorn_contracts/ContractsService/pom.xml index ebd87fd..45d2174 100644 --- a/unicorn_contracts/ContractsService/pom.xml +++ b/unicorn_contracts/ContractsService/pom.xml @@ -1,5 +1,6 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 contracts ContractsService @@ -7,10 +8,10 @@ jar Unicorn Contracts Service module - 17 - 17 + 21 + 21 2.32.29 - 1.20.2 + 2.4.0 3.16.1 5.18.0 4.13.2 @@ -32,14 +33,24 @@ powertools-metrics ${aws.java.powertool.version} - + + software.amazon.lambda + powertools-logging-log4j + ${aws.java.powertool.version} + + + org.aspectj + aspectjrt + 1.9.22 + + com.amazonaws aws-lambda-java-core 1.3.0 - + com.fasterxml.jackson.core @@ -56,7 +67,7 @@ jackson-annotations 2.18.4 - + org.apache.logging.log4j @@ -128,6 +139,7 @@ false handler + true @@ -154,13 +166,13 @@ - org.codehaus.mojo + dev.aspectj aspectj-maven-plugin - 1.15.0 + 1.14 - 17 - 17 - 17 + 21 + 21 + 21 software.amazon.lambda @@ -174,13 +186,18 @@ software.amazon.lambda powertools-metrics + + software.amazon.lambda + powertools-logging + org.aspectj aspectjtools - 1.9.22.1 + + 1.9.22 @@ -196,10 +213,10 @@ maven-compiler-plugin 3.14.0 - 17 - 17 + 21 + 21 - + \ No newline at end of file diff --git a/unicorn_contracts/ContractsService/src/main/java/contracts/ContractEventHandler.java b/unicorn_contracts/ContractsService/src/main/java/contracts/ContractEventHandler.java index c1f2918..4de4200 100644 --- a/unicorn_contracts/ContractsService/src/main/java/contracts/ContractEventHandler.java +++ b/unicorn_contracts/ContractsService/src/main/java/contracts/ContractEventHandler.java @@ -12,7 +12,9 @@ import org.apache.logging.log4j.Logger; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.*; +import software.amazon.lambda.powertools.logging.Logging; import software.amazon.lambda.powertools.tracing.Tracing; +import software.amazon.lambda.powertools.metrics.FlushMetrics; import java.time.Instant; import java.util.Map; @@ -38,6 +40,8 @@ public ContractEventHandler(DynamoDbClient dynamodbClient) { @Override @Tracing + @FlushMetrics(captureColdStart = true) + @Logging(logEvent = true) public Void handleRequest(SQSEvent event, Context context) { if (event == null || event.getRecords() == null) { LOGGER.warn("Received null or empty SQS event"); diff --git a/unicorn_web/PublicationManagerService/pom.xml b/unicorn_web/PublicationManagerService/pom.xml index ace1280..f88fb7d 100644 --- a/unicorn_web/PublicationManagerService/pom.xml +++ b/unicorn_web/PublicationManagerService/pom.xml @@ -1,5 +1,6 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 approval PublicationManagerService @@ -7,10 +8,10 @@ jar Unicorn Web Approval Service module - 17 - 17 + 21 + 21 2.32.29 - 1.20.2 + 2.4.0 3.16.1 5.18.0 4.13.2 @@ -47,6 +48,17 @@ powertools-metrics ${aws.java.powertool.version} + + software.amazon.lambda + powertools-logging-log4j + ${aws.java.powertool.version} + + + org.aspectj + aspectjrt + 1.9.22 + + software.amazon.lambda powertools-cloudformation @@ -157,7 +169,6 @@ - @@ -167,6 +178,7 @@ handler + true @@ -186,11 +198,13 @@ - org.codehaus.mojo + dev.aspectj aspectj-maven-plugin - 1.15.0 + 1.14 - 17 + 21 + 21 + 21 software.amazon.lambda @@ -204,8 +218,20 @@ software.amazon.lambda powertools-metrics + + software.amazon.lambda + powertools-logging + + + + org.aspectj + aspectjtools + + 1.9.22 + + @@ -213,23 +239,16 @@ - - - org.aspectj - aspectjtools - 1.9.22.1 - - org.apache.maven.plugins maven-compiler-plugin 3.14.0 - 17 - 17 + 21 + 21 - + \ No newline at end of file diff --git a/unicorn_web/PublicationManagerService/src/main/java/publicationmanager/PublicationEvaluationEventHandler.java b/unicorn_web/PublicationManagerService/src/main/java/publicationmanager/PublicationEvaluationEventHandler.java index b8f3839..964cb3f 100644 --- a/unicorn_web/PublicationManagerService/src/main/java/publicationmanager/PublicationEvaluationEventHandler.java +++ b/unicorn_web/PublicationManagerService/src/main/java/publicationmanager/PublicationEvaluationEventHandler.java @@ -21,7 +21,7 @@ import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient; import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient; import software.amazon.lambda.powertools.logging.Logging; -import software.amazon.lambda.powertools.metrics.Metrics; +import software.amazon.lambda.powertools.metrics.FlushMetrics; import software.amazon.lambda.powertools.tracing.Tracing; import schema.unicorn_approvals.publicationevaluationcompleted.marshaller.Marshaller; import schema.unicorn_approvals.publicationevaluationcompleted.AWSEvent; @@ -51,7 +51,7 @@ public PublicationEvaluationEventHandler() { } @Tracing - @Metrics(captureColdStart = true) + @FlushMetrics(captureColdStart = true) @Logging(logEvent = true) public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException { try { diff --git a/unicorn_web/PublicationManagerService/src/main/java/publicationmanager/RequestApprovalFunction.java b/unicorn_web/PublicationManagerService/src/main/java/publicationmanager/RequestApprovalFunction.java index 76386fa..83773a1 100644 --- a/unicorn_web/PublicationManagerService/src/main/java/publicationmanager/RequestApprovalFunction.java +++ b/unicorn_web/PublicationManagerService/src/main/java/publicationmanager/RequestApprovalFunction.java @@ -36,7 +36,7 @@ import software.amazon.awssdk.services.eventbridge.model.PutEventsRequest; import software.amazon.awssdk.services.eventbridge.model.PutEventsRequestEntry; import software.amazon.lambda.powertools.logging.Logging; -import software.amazon.lambda.powertools.metrics.Metrics; +import software.amazon.lambda.powertools.metrics.FlushMetrics; import software.amazon.lambda.powertools.tracing.Tracing; /** @@ -73,7 +73,7 @@ public RequestApprovalFunction() { } @Tracing - @Metrics(captureColdStart = true) + @FlushMetrics(captureColdStart = true) @Logging(logEvent = true) public void handleRequest(final SQSEvent input, final Context context) { logger.info("Environment variables - DYNAMODB_TABLE: {}, EVENT_BUS: {}", tableName, eventBus); @@ -183,7 +183,6 @@ private List queryTable(String partitionKey, String sortKey) throws Ex } @Tracing - @Metrics private void sendEvent(Property property) throws JsonProcessingException { logger.info("Creating approval event for property: {}", property.getId()); diff --git a/unicorn_web/SearchService/pom.xml b/unicorn_web/SearchService/pom.xml index b627290..21b09f0 100644 --- a/unicorn_web/SearchService/pom.xml +++ b/unicorn_web/SearchService/pom.xml @@ -1,5 +1,6 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 search SearchService @@ -7,10 +8,10 @@ jar Unicorn Web Search Service module - 17 - 17 + 21 + 21 2.32.29 - 1.20.2 + 2.4.0 3.16.1 5.18.0 4.13.2 @@ -52,16 +53,22 @@ powertools-cloudformation ${aws.java.powertool.version} + + software.amazon.lambda + powertools-logging-log4j + ${aws.java.powertool.version} + + + org.aspectj + aspectjrt + 1.9.22 + + software.amazon.cloudwatchlogs aws-embedded-metrics 4.2.0 - software.amazon.awssdk @@ -163,7 +170,6 @@ - @@ -173,6 +179,7 @@ handler + true @@ -192,11 +199,13 @@ - org.codehaus.mojo + dev.aspectj aspectj-maven-plugin - 1.15.0 + 1.14 - 17 + 21 + 21 + 21 software.amazon.lambda @@ -210,8 +219,20 @@ software.amazon.lambda powertools-metrics + + software.amazon.lambda + powertools-logging + + + + org.aspectj + aspectjtools + + 1.9.22 + + @@ -219,23 +240,16 @@ - - - org.aspectj - aspectjtools - 1.9.22.1 - - org.apache.maven.plugins maven-compiler-plugin 3.14.0 - 17 - 17 + 21 + 21 - + \ No newline at end of file diff --git a/unicorn_web/SearchService/src/main/java/search/PropertySearchFunction.java b/unicorn_web/SearchService/src/main/java/search/PropertySearchFunction.java index ba1da35..cb1804a 100644 --- a/unicorn_web/SearchService/src/main/java/search/PropertySearchFunction.java +++ b/unicorn_web/SearchService/src/main/java/search/PropertySearchFunction.java @@ -29,9 +29,10 @@ import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient; import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.model.DynamoDbException; +import software.amazon.lambda.powertools.metrics.FlushMetrics; import software.amazon.lambda.powertools.metrics.Metrics; import software.amazon.lambda.powertools.tracing.Tracing; -import software.amazon.lambda.powertools.logging.CorrelationIdPathConstants; +import software.amazon.lambda.powertools.logging.CorrelationIdPaths; import software.amazon.lambda.powertools.logging.Logging; /** @@ -61,8 +62,8 @@ public PropertySearchFunction() { } @Tracing - @Metrics(captureColdStart = true) - @Logging(logEvent = true, correlationIdPath = CorrelationIdPathConstants.API_GATEWAY_REST) + @FlushMetrics(captureColdStart = true) + @Logging(logEvent = true, correlationIdPath = CorrelationIdPaths.API_GATEWAY_REST) public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent input, final Context context) { try { if (!"GET".equalsIgnoreCase(input.getHttpMethod())) { diff --git a/unicorn_web/pom.xml b/unicorn_web/pom.xml index d6e816a..f5c39c4 100644 --- a/unicorn_web/pom.xml +++ b/unicorn_web/pom.xml @@ -12,8 +12,8 @@ Unicorn Web Services - 17 - 17 + 21 + 21 UTF-8