Skip to content

Commit

Permalink
35 create docker compose file to run the function locally (#51)
Browse files Browse the repository at this point in the history
* docker-compose

Signed-off-by: muhamadto <muhamadto@gmail.com>

* JSON Logging

Signed-off-by: muhamadto <muhamadto@gmail.com>
  • Loading branch information
muhamadto committed Aug 20, 2023
1 parent a0792e8 commit d8e58ff
Show file tree
Hide file tree
Showing 9 changed files with 73 additions and 61 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ $ ./mvnw -ntp clean verify -U --settings ./settings-spring.xml
```
3. Make a call
```shell
$ curl --location --request POST 'https://ffwtdrvhmg.execute-api.ap-southeast-2.amazonaws.com/dev' \
$ curl --location --request POST 'http://localhost:8080' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "CoffeeBeans"
Expand Down
8 changes: 2 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
<sonar.coverage.jacoco.xmlReportPaths>${project.basedir}/target/site/jacoco/jacoco.xml, ${project.basedir}/target/site/jacoco-it/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>

<sonar.coverage.exclusions>**/model/*.java, **/Application.java,**/*Hints.java</sonar.coverage.exclusions>
<lombok.version>1.18.28</lombok.version>
</properties>

<parent>
Expand Down Expand Up @@ -148,7 +149,7 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
<version>${lombok.version}</version>
</dependency>
<!-- UTILS ENDS -->

Expand Down Expand Up @@ -227,11 +228,6 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<classpathDependencyExcludes>
<classpathDependencyExclude>org.apache.logging.log4j:log4j-slf4j-impl</classpathDependencyExclude>
</classpathDependencyExcludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
Expand Down
50 changes: 37 additions & 13 deletions spring-native-aws-lambda-function/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,14 @@

<properties>
<spring-cloud.version>2022.0.1</spring-cloud.version>
<aspectj.version>1.9.20</aspectj.version>

<repackage.classifier/>
<native.build.args>
--enable-url-protocols=http
-H:+AddAllCharsets
-H:+ReportExceptionStackTraces
</native.build.args>
<lsl-bom.version>23.0326.344</lsl-bom.version>
</properties>

<dependencyManagement>
Expand All @@ -74,30 +75,19 @@
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-serialization</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>software.amazon.lambda</groupId>
<artifactId>powertools-logging</artifactId>
</dependency>


<!-- AWS LAMBDA ENDS -->

<!-- SPRING CLOUD -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-function-adapter-aws</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
Expand All @@ -122,6 +112,36 @@
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.4.8</version>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.8</version>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.7</version>
</dependency>

<dependency>
<groupId>ch.qos.logback.contrib</groupId>
<artifactId>logback-json-classic</artifactId>
<version>0.1.5</version>
</dependency>

<dependency>
<groupId>ch.qos.logback.contrib</groupId>
<artifactId>logback-jackson</artifactId>
<version>0.1.5</version>
</dependency>
<!-- UTILITIES ENDS -->

<!-- TEST -->
Expand All @@ -142,10 +162,14 @@
<scope>test</scope>
</dependency>
<!-- TEST ENDS -->

</dependencies>

<build>
<finalName>${project.artifactId}</finalName>
<directory>${project.basedir}/target</directory>
<plugins>
</plugins>
</build>

<profiles>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,27 @@

import com.coffeebeans.springnativeawslambda.model.Request;
import com.coffeebeans.springnativeawslambda.model.Response;
import java.util.List;
import org.springframework.aot.hint.MemberCategory;
import org.springframework.aot.hint.RuntimeHints;
import org.springframework.aot.hint.RuntimeHintsRegistrar;
import org.springframework.aot.hint.TypeReference;

public class AppRuntimeHints implements RuntimeHintsRegistrar {

@Override
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
public void registerHints(final RuntimeHints hints, final ClassLoader classLoader) {
hints.serialization().registerType(Request.class);
hints.serialization().registerType(Response.class);
hints.resources().registerPattern("org/joda/time/tz/*");

final List<TypeReference> typeReferences = List.of(
TypeReference.of("org.apache.logging.log4j.message.DefaultFlowMessageFactory"),
TypeReference.of("org.apache.logging.log4j.message.ParameterizedMessageFactory"),
TypeReference.of("java.util.ServiceLoader")
);

hints.reflection().registerTypes(typeReferences,
builder -> builder.withMembers(MemberCategory.values()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.exc.InvalidDefinitionException;
import java.util.Map;
import lombok.extern.log4j.Log4j2;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@Log4j2
@Slf4j
@RestControllerAdvice
public class LambdaExceptionHandler {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,12 @@
import jakarta.validation.constraints.NotNull;
import java.util.function.Function;
import lombok.SneakyThrows;
import lombok.extern.log4j.Log4j2;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import software.amazon.lambda.powertools.logging.CorrelationIdPathConstants;
import software.amazon.lambda.powertools.logging.Logging;

@Component
@Log4j2
@Slf4j
@Validated
public class ExampleFunction implements
Function<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {
Expand All @@ -53,7 +51,6 @@ public ExampleFunction(@NotNull final ObjectMapper objectMapper) {
* @throws JsonProcessingException
*/
@Override
@Logging(correlationIdPath = CorrelationIdPathConstants.API_GATEWAY_REST)
@SneakyThrows(value = JsonProcessingException.class)
public APIGatewayProxyResponseEvent apply(final APIGatewayProxyRequestEvent proxyRequestEvent) {
log.info("Converting request into a response...'");
Expand Down

This file was deleted.

16 changes: 0 additions & 16 deletions spring-native-aws-lambda-function/src/main/resources/log4j2.xml

This file was deleted.

31 changes: 16 additions & 15 deletions spring-native-aws-lambda-function/src/main/resources/logback.xml
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="JsonAppender" target="SYSTEM_OUT">
<JsonTemplateLayout eventTemplateUri="classpath:LambdaJsonLayout.json" />
</Console>
</Appenders>
<Loggers>
<Logger name="JsonLogger" level="INFO" additivity="false">
<AppenderRef ref="JsonAppender"/>
</Logger>
<Root level="info">
<AppenderRef ref="JsonAppender"/>
</Root>
</Loggers>
</Configuration>
<configuration>
<appender name="JsonConsole" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.contrib.json.classic.JsonLayout">
<jsonFormatter class="ch.qos.logback.contrib.jackson.JacksonJsonFormatter">
<prettyPrint>true</prettyPrint>
</jsonFormatter>
<timestampFormat>yyyy-MM-dd'T'HH:mm:ss.SSSX</timestampFormat>
</layout>
</encoder>
</appender>

<root level="INFO">
<appender-ref ref="JsonConsole"/>
</root>
</configuration>

0 comments on commit d8e58ff

Please sign in to comment.