diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index f2e5e5cb5..5bc64b43f 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -25,9 +25,8 @@ jobs: - name: Capture branch and tag id: branch_name run: | - echo ::set-env name=SOURCE_BRANCH::${GITHUB_REF#refs/heads/} - echo ::set-env name=SOURCE_TAG::${GITHUB_REF#refs/tags/} - + echo "SOURCE_BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV + echo "SOURCE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - name: install dependencies run: make dev-docs - name: Build docs website diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 5eb6d98bd..dfc0ce206 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -18,9 +18,8 @@ jobs: - name: Capture branch and tag id: branch_name run: | - echo ::set-env name=SOURCE_BRANCH::${GITHUB_REF#refs/heads/} - echo ::set-env name=SOURCE_TAG::${GITHUB_REF#refs/tags/} - + echo "SOURCE_BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV + echo "SOURCE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - name: install dependencies run: make dev-docs - name: Build docs website diff --git a/docs/content/index.mdx b/docs/content/index.mdx index 3617340dd..df30d6cb4 100644 --- a/docs/content/index.mdx +++ b/docs/content/index.mdx @@ -79,7 +79,7 @@ And configure the aspectj-maven-plugin to compile-time weave (CTW) the aws-lambd ```groovy plugins{ id 'java' - id 'aspectj.AspectjGradlePlugin' version '0.0.3' + id 'aspectj.AspectjGradlePlugin' version '0.0.6' } repositories { jcenter() @@ -94,8 +94,10 @@ dependencies { } ``` -**Note:** Please add `aspectjVersion = '1.9.6'` to the `gradle.properties` file. The aspectj plugin works at the moment with gradle 5.x only. -Please refer to [open issue](https://github.com/awslabs/aws-lambda-powertools-java/issues/146) for more details. +**Note:** + +Please add `aspectjVersion = '1.9.6'` to the `gradle.properties` file. The aspectj plugin works at the moment with gradle 5.x only if +you are using `java 8` as runtime. Please refer to [open issue](https://github.com/awslabs/aws-lambda-powertools-java/issues/146) for more details. ## Environment variables diff --git a/example/HelloWorldFunction/build.gradle b/example/HelloWorldFunction/build.gradle index 328f9daf1..ace1860f5 100644 --- a/example/HelloWorldFunction/build.gradle +++ b/example/HelloWorldFunction/build.gradle @@ -1,6 +1,6 @@ plugins{ id 'java' - id 'aspectj.AspectjGradlePlugin' version '0.0.3' + id 'aspectj.AspectjGradlePlugin' version '0.0.6' } repositories { @@ -23,6 +23,9 @@ dependencies { implementation 'software.amazon.lambda:powertools-parameters:1.0.0' aspectpath 'software.amazon.lambda:powertools-parameters:1.0.0' + implementation 'software.amazon.lambda:powertools-validation:1.0.0' + aspectpath 'software.amazon.lambda:powertools-validation:1.0.0' + implementation 'com.amazonaws:aws-lambda-java-core:1.2.0' implementation 'com.amazonaws:aws-lambda-java-events:3.1.0' diff --git a/example/HelloWorldFunction/pom.xml b/example/HelloWorldFunction/pom.xml index da63ac2a6..34bfcbba7 100644 --- a/example/HelloWorldFunction/pom.xml +++ b/example/HelloWorldFunction/pom.xml @@ -7,8 +7,8 @@ jar A sample Hello World created for SAM CLI. - 1.8 - 1.8 + 11 + 11 2.13.2 @@ -80,9 +80,10 @@ - org.codehaus.mojo + + com.nickwongdev aspectj-maven-plugin - 1.11 + 1.12.6 ${maven.compiler.source} ${maven.compiler.target} diff --git a/example/template.yaml b/example/template.yaml index f9b6729f8..8ef57d12f 100644 --- a/example/template.yaml +++ b/example/template.yaml @@ -9,6 +9,7 @@ Description: > Globals: Function: Timeout: 20 + Runtime: java11 Resources: HelloWorldFunction: @@ -16,7 +17,6 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.App::handleRequest - Runtime: java8 MemorySize: 512 Environment: # More info about Env Vars: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object Variables: @@ -35,7 +35,6 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppValidation::handleRequest - Runtime: java8 MemorySize: 512 Tracing: Active Events: @@ -50,7 +49,6 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppStream::handleRequest - Runtime: java8 MemorySize: 512 Tracing: Active Environment: @@ -68,7 +66,6 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppParams::handleRequest - Runtime: java8 MemorySize: 512 Tracing: Active Policies: @@ -148,7 +145,6 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppSqsEvent::handleRequest - Runtime: java8 MemorySize: 512 Tracing: Active Policies: @@ -174,7 +170,6 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppSqsEventUtil::handleRequest - Runtime: java8 MemorySize: 512 Tracing: Active Policies: diff --git a/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java b/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java index 5475d89b6..467822f40 100644 --- a/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java +++ b/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java @@ -78,4 +78,8 @@ public static boolean isColdStart() { public static void coldStartDone() { IS_COLD_START = false; } + + public static boolean isSamLocal() { + return "true".equals(System.getenv("AWS_SAM_LOCAL")); + } } diff --git a/powertools-tracing/src/main/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspect.java b/powertools-tracing/src/main/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspect.java index 9aafa0a94..ebc2829d7 100644 --- a/powertools-tracing/src/main/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspect.java +++ b/powertools-tracing/src/main/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspect.java @@ -24,6 +24,7 @@ import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.coldStartDone; import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.isColdStart; import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.isHandlerMethod; +import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.isSamLocal; import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.placedOnRequestHandler; import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.placedOnStreamHandler; import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.serviceName; @@ -62,7 +63,9 @@ public Object around(ProceedingJoinPoint pjp, } throw e; } finally { - AWSXRay.endSubsegment(); + if (!isSamLocal()) { + AWSXRay.endSubsegment(); + } } } diff --git a/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspectTest.java b/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspectTest.java index 477ceddb4..58a9af4f2 100644 --- a/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspectTest.java +++ b/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspectTest.java @@ -25,6 +25,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; +import software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor; import software.amazon.lambda.powertools.tracing.handlers.PowerToolDisabled; import software.amazon.lambda.powertools.tracing.handlers.PowerToolDisabledForStream; import software.amazon.lambda.powertools.tracing.handlers.PowerTracerToolEnabled; @@ -32,13 +33,12 @@ import software.amazon.lambda.powertools.tracing.handlers.PowerTracerToolEnabledForStreamWithNoMetaData; import software.amazon.lambda.powertools.tracing.handlers.PowerTracerToolEnabledWithException; import software.amazon.lambda.powertools.tracing.handlers.PowerTracerToolEnabledWithNoMetaData; -import software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor; import static org.apache.commons.lang3.reflect.FieldUtils.writeStaticField; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; import static org.mockito.Mockito.when; -import static org.mockito.MockitoAnnotations.initMocks; +import static org.mockito.MockitoAnnotations.openMocks; class LambdaTracingAspectTest { private RequestHandler requestHandler; @@ -49,7 +49,7 @@ class LambdaTracingAspectTest { @BeforeEach void setUp() throws IllegalAccessException { - initMocks(this); + openMocks(this); writeStaticField(LambdaHandlerProcessor.class, "IS_COLD_START", null, true); setupContext(); requestHandler = new PowerTracerToolEnabled();