Skip to content

Commit d8e58ff

Browse files
authored
35 create docker compose file to run the function locally (#51)
* docker-compose Signed-off-by: muhamadto <muhamadto@gmail.com> * JSON Logging Signed-off-by: muhamadto <muhamadto@gmail.com>
1 parent a0792e8 commit d8e58ff

File tree

9 files changed

+73
-61
lines changed

9 files changed

+73
-61
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ $ ./mvnw -ntp clean verify -U --settings ./settings-spring.xml
5656
```
5757
3. Make a call
5858
```shell
59-
$ curl --location --request POST 'https://ffwtdrvhmg.execute-api.ap-southeast-2.amazonaws.com/dev' \
59+
$ curl --location --request POST 'http://localhost:8080' \
6060
--header 'Content-Type: application/json' \
6161
--data-raw '{
6262
"name": "CoffeeBeans"

pom.xml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
<sonar.coverage.jacoco.xmlReportPaths>${project.basedir}/target/site/jacoco/jacoco.xml, ${project.basedir}/target/site/jacoco-it/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
6767

6868
<sonar.coverage.exclusions>**/model/*.java, **/Application.java,**/*Hints.java</sonar.coverage.exclusions>
69+
<lombok.version>1.18.28</lombok.version>
6970
</properties>
7071

7172
<parent>
@@ -148,7 +149,7 @@
148149
<dependency>
149150
<groupId>org.projectlombok</groupId>
150151
<artifactId>lombok</artifactId>
151-
<version>1.18.28</version>
152+
<version>${lombok.version}</version>
152153
</dependency>
153154
<!-- UTILS ENDS -->
154155

@@ -227,11 +228,6 @@
227228
<groupId>org.apache.maven.plugins</groupId>
228229
<artifactId>maven-surefire-plugin</artifactId>
229230
<version>3.1.0</version>
230-
<configuration>
231-
<classpathDependencyExcludes>
232-
<classpathDependencyExclude>org.apache.logging.log4j:log4j-slf4j-impl</classpathDependencyExclude>
233-
</classpathDependencyExcludes>
234-
</configuration>
235231
</plugin>
236232
<plugin>
237233
<groupId>org.apache.maven.plugins</groupId>

spring-native-aws-lambda-function/pom.xml

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,14 @@
4343

4444
<properties>
4545
<spring-cloud.version>2022.0.1</spring-cloud.version>
46+
<aspectj.version>1.9.20</aspectj.version>
47+
4648
<repackage.classifier/>
4749
<native.build.args>
4850
--enable-url-protocols=http
4951
-H:+AddAllCharsets
5052
-H:+ReportExceptionStackTraces
5153
</native.build.args>
52-
<lsl-bom.version>23.0326.344</lsl-bom.version>
5354
</properties>
5455

5556
<dependencyManagement>
@@ -74,30 +75,19 @@
7475
<dependency>
7576
<groupId>com.amazonaws</groupId>
7677
<artifactId>aws-lambda-java-core</artifactId>
77-
<scope>provided</scope>
7878
</dependency>
7979
<dependency>
8080
<groupId>com.amazonaws</groupId>
8181
<artifactId>aws-lambda-java-serialization</artifactId>
82-
<scope>provided</scope>
83-
</dependency>
84-
<dependency>
85-
<groupId>software.amazon.lambda</groupId>
86-
<artifactId>powertools-logging</artifactId>
8782
</dependency>
8883

84+
8985
<!-- AWS LAMBDA ENDS -->
9086

9187
<!-- SPRING CLOUD -->
9288
<dependency>
9389
<groupId>org.springframework.cloud</groupId>
9490
<artifactId>spring-cloud-function-adapter-aws</artifactId>
95-
<exclusions>
96-
<exclusion>
97-
<groupId>org.springframework.boot</groupId>
98-
<artifactId>spring-boot-starter-logging</artifactId>
99-
</exclusion>
100-
</exclusions>
10191
</dependency>
10292

10393
<dependency>
@@ -122,6 +112,36 @@
122112
<groupId>org.projectlombok</groupId>
123113
<artifactId>lombok</artifactId>
124114
</dependency>
115+
116+
<dependency>
117+
<groupId>ch.qos.logback</groupId>
118+
<artifactId>logback-core</artifactId>
119+
<version>1.4.8</version>
120+
</dependency>
121+
122+
<dependency>
123+
<groupId>ch.qos.logback</groupId>
124+
<artifactId>logback-classic</artifactId>
125+
<version>1.4.8</version>
126+
</dependency>
127+
128+
<dependency>
129+
<groupId>org.slf4j</groupId>
130+
<artifactId>slf4j-api</artifactId>
131+
<version>2.0.7</version>
132+
</dependency>
133+
134+
<dependency>
135+
<groupId>ch.qos.logback.contrib</groupId>
136+
<artifactId>logback-json-classic</artifactId>
137+
<version>0.1.5</version>
138+
</dependency>
139+
140+
<dependency>
141+
<groupId>ch.qos.logback.contrib</groupId>
142+
<artifactId>logback-jackson</artifactId>
143+
<version>0.1.5</version>
144+
</dependency>
125145
<!-- UTILITIES ENDS -->
126146

127147
<!-- TEST -->
@@ -142,10 +162,14 @@
142162
<scope>test</scope>
143163
</dependency>
144164
<!-- TEST ENDS -->
165+
145166
</dependencies>
146167

147168
<build>
148169
<finalName>${project.artifactId}</finalName>
170+
<directory>${project.basedir}/target</directory>
171+
<plugins>
172+
</plugins>
149173
</build>
150174

151175
<profiles>

spring-native-aws-lambda-function/src/main/java/com/coffeebeans/springnativeawslambda/AppRuntimeHints.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,27 @@
2020

2121
import com.coffeebeans.springnativeawslambda.model.Request;
2222
import com.coffeebeans.springnativeawslambda.model.Response;
23+
import java.util.List;
24+
import org.springframework.aot.hint.MemberCategory;
2325
import org.springframework.aot.hint.RuntimeHints;
2426
import org.springframework.aot.hint.RuntimeHintsRegistrar;
27+
import org.springframework.aot.hint.TypeReference;
2528

2629
public class AppRuntimeHints implements RuntimeHintsRegistrar {
2730

2831
@Override
29-
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
32+
public void registerHints(final RuntimeHints hints, final ClassLoader classLoader) {
3033
hints.serialization().registerType(Request.class);
3134
hints.serialization().registerType(Response.class);
3235
hints.resources().registerPattern("org/joda/time/tz/*");
36+
37+
final List<TypeReference> typeReferences = List.of(
38+
TypeReference.of("org.apache.logging.log4j.message.DefaultFlowMessageFactory"),
39+
TypeReference.of("org.apache.logging.log4j.message.ParameterizedMessageFactory"),
40+
TypeReference.of("java.util.ServiceLoader")
41+
);
42+
43+
hints.reflection().registerTypes(typeReferences,
44+
builder -> builder.withMembers(MemberCategory.values()));
3345
}
3446
}

spring-native-aws-lambda-function/src/main/java/com/coffeebeans/springnativeawslambda/LambdaExceptionHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
import com.fasterxml.jackson.core.JsonProcessingException;
66
import com.fasterxml.jackson.databind.exc.InvalidDefinitionException;
77
import java.util.Map;
8-
import lombok.extern.log4j.Log4j2;
8+
import lombok.extern.slf4j.Slf4j;
99
import org.springframework.web.bind.annotation.ExceptionHandler;
1010
import org.springframework.web.bind.annotation.RestControllerAdvice;
1111

12-
@Log4j2
12+
@Slf4j
1313
@RestControllerAdvice
1414
public class LambdaExceptionHandler {
1515

spring-native-aws-lambda-function/src/main/java/com/coffeebeans/springnativeawslambda/function/ExampleFunction.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,12 @@
2727
import jakarta.validation.constraints.NotNull;
2828
import java.util.function.Function;
2929
import lombok.SneakyThrows;
30-
import lombok.extern.log4j.Log4j2;
30+
import lombok.extern.slf4j.Slf4j;
3131
import org.springframework.stereotype.Component;
3232
import org.springframework.validation.annotation.Validated;
33-
import software.amazon.lambda.powertools.logging.CorrelationIdPathConstants;
34-
import software.amazon.lambda.powertools.logging.Logging;
3533

3634
@Component
37-
@Log4j2
35+
@Slf4j
3836
@Validated
3937
public class ExampleFunction implements
4038
Function<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {
@@ -53,7 +51,6 @@ public ExampleFunction(@NotNull final ObjectMapper objectMapper) {
5351
* @throws JsonProcessingException
5452
*/
5553
@Override
56-
@Logging(correlationIdPath = CorrelationIdPathConstants.API_GATEWAY_REST)
5754
@SneakyThrows(value = JsonProcessingException.class)
5855
public APIGatewayProxyResponseEvent apply(final APIGatewayProxyRequestEvent proxyRequestEvent) {
5956
log.info("Converting request into a response...'");

spring-native-aws-lambda-function/src/main/resources/log4j2.component.properties

Lines changed: 0 additions & 2 deletions
This file was deleted.

spring-native-aws-lambda-function/src/main/resources/log4j2.xml

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<Configuration>
3-
<Appenders>
4-
<Console name="JsonAppender" target="SYSTEM_OUT">
5-
<JsonTemplateLayout eventTemplateUri="classpath:LambdaJsonLayout.json" />
6-
</Console>
7-
</Appenders>
8-
<Loggers>
9-
<Logger name="JsonLogger" level="INFO" additivity="false">
10-
<AppenderRef ref="JsonAppender"/>
11-
</Logger>
12-
<Root level="info">
13-
<AppenderRef ref="JsonAppender"/>
14-
</Root>
15-
</Loggers>
16-
</Configuration>
2+
<configuration>
3+
<appender name="JsonConsole" class="ch.qos.logback.core.ConsoleAppender">
4+
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
5+
<layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
6+
<jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
7+
<prettyPrint>true</prettyPrint>
8+
</jsonFormatter>
9+
<timestampFormat>yyyy-MM-dd'T'HH:mm:ss.SSSX</timestampFormat>
10+
</layout>
11+
</encoder>
12+
</appender>
13+
14+
<root level="INFO">
15+
<appender-ref ref="JsonConsole"/>
16+
</root>
17+
</configuration>

0 commit comments

Comments
 (0)