Skip to content

Commit a0792e8

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

File tree

13 files changed

+110
-66
lines changed

13 files changed

+110
-66
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,16 +43,16 @@ $ ./mvnw -ntp clean verify -U --settings ./settings-spring.xml
4343
```
4444
The service starts in less than 100 ms
4545
```shell
46-
2022-12-07 02:56:51.706 INFO 42417 --- [ main] c.c.s.SpringNativeAwsLambdaApplication : Starting SpringNativeAwsLambdaApplication using Java 17.0.4
47-
2022-12-07 02:56:51.706 INFO 42417 --- [ main] c.c.s.SpringNativeAwsLambdaApplication : No active profile set, falling back to 1 default profile: "default"
46+
2022-12-07 02:56:51.706 INFO 42417 --- [ main] c.c.s.Application : Starting Application using Java 17.0.4
47+
2022-12-07 02:56:51.706 INFO 42417 --- [ main] c.c.s.Application : No active profile set, falling back to 1 default profile: "default"
4848
2022-12-07 02:56:51.723 INFO 42417 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
4949
2022-12-07 02:56:51.724 INFO 42417 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
5050
2022-12-07 02:56:51.724 INFO 42417 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.68]
5151
2022-12-07 02:56:51.733 INFO 42417 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
5252
2022-12-07 02:56:51.733 INFO 42417 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 27 ms
5353
2022-12-07 02:56:51.761 INFO 42417 --- [ main] o.s.c.f.web.mvc.FunctionHandlerMapping : FunctionCatalog: org.springframework.cloud.function.context.catalog.BeanFactoryAwareFunctionRegistry@7efd575
5454
2022-12-07 02:56:51.763 INFO 42417 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
55-
2022-12-07 02:56:51.763 INFO 42417 --- [ main] c.c.s.SpringNativeAwsLambdaApplication : Started SpringNativeAwsLambdaApplication in 0.084 seconds (JVM running for 0.087)
55+
2022-12-07 02:56:51.763 INFO 42417 --- [ main] c.c.s.Application : Started Application in 0.084 seconds (JVM running for 0.087)
5656
```
5757
3. Make a call
5858
```shell

pom.xml

Lines changed: 56 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -39,42 +39,33 @@
3939
</developers>
4040

4141
<properties>
42+
<revision>1.0.0-SNAPSHOT</revision>
43+
44+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
45+
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
46+
4247
<maven.compiler.source>20</maven.compiler.source>
4348
<maven.compiler.target>20</maven.compiler.target>
4449
<maven.compiler.release>20</maven.compiler.release>
50+
<maven.compiler.parameters>true</maven.compiler.parameters>
51+
52+
<jackson.version>2.13.0</jackson.version>
4553

46-
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
47-
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
4854
<sonar.organization>muhamadto</sonar.organization>
4955
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
50-
<sonar.issue.ignore.multicriteria>e1,e2</sonar.issue.ignore.multicriteria>
5156

52-
<sonar.issue.ignore.multicriteria.e1.ruleKey>java:S107
53-
</sonar.issue.ignore.multicriteria.e1.ruleKey>
54-
<sonar.issue.ignore.multicriteria.e1.resourceKey>**/cdk/*.java
55-
</sonar.issue.ignore.multicriteria.e1.resourceKey>
57+
<sonar.issue.ignore.multicriteria>e1,e2</sonar.issue.ignore.multicriteria>
58+
<sonar.issue.ignore.multicriteria.e1.ruleKey>java:S107</sonar.issue.ignore.multicriteria.e1.ruleKey>
59+
<sonar.issue.ignore.multicriteria.e1.resourceKey>**/cdk/*.java</sonar.issue.ignore.multicriteria.e1.resourceKey>
5660

5761
<!-- This class has 6 parents which is greater than 5 authorized,
5862
suspended as we are using CDK and the original code has 5 levels of inheritance already-->
59-
<sonar.issue.ignore.multicriteria.e2.ruleKey>java:S110
60-
</sonar.issue.ignore.multicriteria.e2.ruleKey>
61-
<sonar.issue.ignore.multicriteria.e2.resourceKey>**/cdk/*.java
62-
</sonar.issue.ignore.multicriteria.e2.resourceKey>
63-
<sonar.coverage.jacoco.xmlReportPaths>${project.basedir}/target/site/jacoco/jacoco.xml,
64-
${project.basedir}/target/site/jacoco-it/jacoco.xml
65-
</sonar.coverage.jacoco.xmlReportPaths>
66-
<sonar.coverage.exclusions>**/model/*.java, **/Application.java,
67-
**/SpringNativeAwsLambdaApplication.java,**/*Hints.java,
68-
**/*Application.java
69-
</sonar.coverage.exclusions>
70-
<maven.compiler.parameters>true</maven.compiler.parameters>
71-
<assertj-core.version>3.23.1</assertj-core.version>
72-
<maven-surefire-plugin.version>3.0.0-M7</maven-surefire-plugin.version>
73-
<sonar.organization>muhamadto</sonar.organization>
74-
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
75-
<revision>1.0.0-SNAPSHOT</revision>
76-
<jackson.version>2.13.0</jackson.version>
77-
<spring-boot-dependencies.version>3.1.2</spring-boot-dependencies.version>
63+
<sonar.issue.ignore.multicriteria.e2.ruleKey>java:S110</sonar.issue.ignore.multicriteria.e2.ruleKey>
64+
<sonar.issue.ignore.multicriteria.e2.resourceKey>**/cdk/*.java</sonar.issue.ignore.multicriteria.e2.resourceKey>
65+
66+
<sonar.coverage.jacoco.xmlReportPaths>${project.basedir}/target/site/jacoco/jacoco.xml, ${project.basedir}/target/site/jacoco-it/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
67+
68+
<sonar.coverage.exclusions>**/model/*.java, **/Application.java,**/*Hints.java</sonar.coverage.exclusions>
7869
</properties>
7970

8071
<parent>
@@ -101,8 +92,34 @@
10192
<artifactId>spring-native-aws-lambda-infra</artifactId>
10293
<version>${project.version}</version>
10394
</dependency>
95+
10496
<!-- SPRING-NATIVE-AWS-LAMBDA ENDS -->
10597

98+
<!-- AWS -->
99+
<dependency>
100+
<groupId>com.amazonaws</groupId>
101+
<artifactId>aws-lambda-java-events</artifactId>
102+
<version>3.11.1</version>
103+
</dependency>
104+
<dependency>
105+
<groupId>com.amazonaws</groupId>
106+
<artifactId>aws-lambda-java-core</artifactId>
107+
<version>1.2.2</version>
108+
<scope>provided</scope>
109+
</dependency>
110+
<dependency>
111+
<groupId>com.amazonaws</groupId>
112+
<artifactId>aws-lambda-java-serialization</artifactId>
113+
<version>1.1.2</version>
114+
<scope>provided</scope>
115+
</dependency>
116+
<dependency>
117+
<groupId>software.amazon.lambda</groupId>
118+
<artifactId>powertools-logging</artifactId>
119+
<version>1.16.1</version>
120+
</dependency>
121+
<!-- AWS END -->
122+
106123
<!-- UTILS -->
107124
<dependency>
108125
<groupId>org.apache.commons</groupId>
@@ -116,12 +133,6 @@
116133
<version>4.4</version>
117134
</dependency>
118135

119-
<dependency>
120-
<groupId>org.projectlombok</groupId>
121-
<artifactId>lombok</artifactId>
122-
<version>1.18.24</version>
123-
</dependency>
124-
125136
<dependency>
126137
<groupId>javax.validation</groupId>
127138
<artifactId>validation-api</artifactId>
@@ -133,6 +144,12 @@
133144
<artifactId>guava</artifactId>
134145
<version>32.0.0-jre</version>
135146
</dependency>
147+
148+
<dependency>
149+
<groupId>org.projectlombok</groupId>
150+
<artifactId>lombok</artifactId>
151+
<version>1.18.28</version>
152+
</dependency>
136153
<!-- UTILS ENDS -->
137154

138155
<!-- JACKSON -->
@@ -181,7 +198,7 @@
181198
<dependency>
182199
<groupId>org.assertj</groupId>
183200
<artifactId>assertj-core</artifactId>
184-
<version>${assertj-core.version}</version>
201+
<version>3.23.1</version>
185202
<scope>test</scope>
186203
</dependency>
187204

@@ -209,7 +226,12 @@
209226
<plugin>
210227
<groupId>org.apache.maven.plugins</groupId>
211228
<artifactId>maven-surefire-plugin</artifactId>
212-
<version>${maven-surefire-plugin.version}</version>
229+
<version>3.1.0</version>
230+
<configuration>
231+
<classpathDependencyExcludes>
232+
<classpathDependencyExclude>org.apache.logging.log4j:log4j-slf4j-impl</classpathDependencyExclude>
233+
</classpathDependencyExcludes>
234+
</configuration>
213235
</plugin>
214236
<plugin>
215237
<groupId>org.apache.maven.plugins</groupId>

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

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,7 @@
4242
</developers>
4343

4444
<properties>
45-
<lombok.version>1.18.26</lombok.version>
46-
<aws-lambda-events.version>3.11.1</aws-lambda-events.version>
47-
<aws-lambda-java-core.version>1.2.2</aws-lambda-java-core.version>
48-
<aws-lambda-java-serialization.version>1.1.2</aws-lambda-java-serialization.version>
4945
<spring-cloud.version>2022.0.1</spring-cloud.version>
50-
<maven-assembly-plugin.version>3.3.0</maven-assembly-plugin.version>
5146
<repackage.classifier/>
5247
<native.build.args>
5348
--enable-url-protocols=http
@@ -75,27 +70,34 @@
7570
<dependency>
7671
<groupId>com.amazonaws</groupId>
7772
<artifactId>aws-lambda-java-events</artifactId>
78-
<version>${aws-lambda-events.version}</version>
7973
</dependency>
8074
<dependency>
8175
<groupId>com.amazonaws</groupId>
8276
<artifactId>aws-lambda-java-core</artifactId>
83-
<version>${aws-lambda-java-core.version}</version>
8477
<scope>provided</scope>
8578
</dependency>
8679
<dependency>
8780
<groupId>com.amazonaws</groupId>
8881
<artifactId>aws-lambda-java-serialization</artifactId>
89-
<version>${aws-lambda-java-serialization.version}</version>
9082
<scope>provided</scope>
9183
</dependency>
84+
<dependency>
85+
<groupId>software.amazon.lambda</groupId>
86+
<artifactId>powertools-logging</artifactId>
87+
</dependency>
9288

9389
<!-- AWS LAMBDA ENDS -->
9490

9591
<!-- SPRING CLOUD -->
9692
<dependency>
9793
<groupId>org.springframework.cloud</groupId>
9894
<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>
99101
</dependency>
100102

101103
<dependency>
@@ -119,7 +121,6 @@
119121
<dependency>
120122
<groupId>org.projectlombok</groupId>
121123
<artifactId>lombok</artifactId>
122-
<version>${lombok.version}</version>
123124
</dependency>
124125
<!-- UTILITIES ENDS -->
125126

@@ -175,7 +176,7 @@
175176
<groupId>org.graalvm.buildtools</groupId>
176177
<artifactId>native-maven-plugin</artifactId>
177178
<configuration>
178-
<mainClass>com.coffeebeans.springnativeawslambda.function.SpringNativeAwsLambdaApplication</mainClass>
179+
<mainClass>com.coffeebeans.springnativeawslambda.Application</mainClass>
179180
<buildArgs>
180181
--no-fallback
181182
</buildArgs>
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
*
1717
*/
1818

19-
package com.coffeebeans.springnativeawslambda.function;
19+
package com.coffeebeans.springnativeawslambda;
2020

21-
import com.coffeebeans.springnativeawslambda.function.model.Request;
22-
import com.coffeebeans.springnativeawslambda.function.model.Response;
21+
import com.coffeebeans.springnativeawslambda.model.Request;
22+
import com.coffeebeans.springnativeawslambda.model.Response;
2323
import org.springframework.aot.hint.RuntimeHints;
2424
import org.springframework.aot.hint.RuntimeHintsRegistrar;
2525

@@ -31,5 +31,4 @@ public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
3131
hints.serialization().registerType(Response.class);
3232
hints.resources().registerPattern("org/joda/time/tz/*");
3333
}
34-
3534
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,17 @@
1616
*
1717
*/
1818

19-
package com.coffeebeans.springnativeawslambda.function;
19+
package com.coffeebeans.springnativeawslambda;
2020

2121
import org.springframework.boot.SpringApplication;
2222
import org.springframework.boot.autoconfigure.SpringBootApplication;
2323
import org.springframework.context.annotation.ImportRuntimeHints;
2424

2525
@SpringBootApplication
2626
@ImportRuntimeHints(AppRuntimeHints.class)
27-
public class SpringNativeAwsLambdaApplication {
27+
public class Application {
2828

2929
public static void main(String[] args) {
30-
SpringApplication.run(SpringNativeAwsLambdaApplication.class, args);
30+
SpringApplication.run(Application.class, args);
3131
}
3232
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.coffeebeans.springnativeawslambda.function;
1+
package com.coffeebeans.springnativeawslambda;
22

33
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
44
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,26 +16,28 @@
1616
*
1717
*/
1818

19-
package com.coffeebeans.springnativeawslambda.function.functions;
19+
package com.coffeebeans.springnativeawslambda.function;
2020

2121
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
2222
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
23-
import com.coffeebeans.springnativeawslambda.function.model.Request;
24-
import com.coffeebeans.springnativeawslambda.function.model.Response;
23+
import com.coffeebeans.springnativeawslambda.model.Request;
24+
import com.coffeebeans.springnativeawslambda.model.Response;
2525
import com.fasterxml.jackson.core.JsonProcessingException;
2626
import com.fasterxml.jackson.databind.ObjectMapper;
2727
import jakarta.validation.constraints.NotNull;
2828
import java.util.function.Function;
2929
import lombok.SneakyThrows;
3030
import lombok.extern.log4j.Log4j2;
31-
import lombok.extern.slf4j.Slf4j;
3231
import org.springframework.stereotype.Component;
3332
import org.springframework.validation.annotation.Validated;
33+
import software.amazon.lambda.powertools.logging.CorrelationIdPathConstants;
34+
import software.amazon.lambda.powertools.logging.Logging;
3435

3536
@Component
3637
@Log4j2
3738
@Validated
38-
public class ExampleFunction implements Function<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {
39+
public class ExampleFunction implements
40+
Function<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {
3941

4042
private final ObjectMapper objectMapper;
4143

@@ -51,6 +53,7 @@ public ExampleFunction(@NotNull final ObjectMapper objectMapper) {
5153
* @throws JsonProcessingException
5254
*/
5355
@Override
56+
@Logging(correlationIdPath = CorrelationIdPathConstants.API_GATEWAY_REST)
5457
@SneakyThrows(value = JsonProcessingException.class)
5558
public APIGatewayProxyResponseEvent apply(final APIGatewayProxyRequestEvent proxyRequestEvent) {
5659
log.info("Converting request into a response...'");
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*
1717
*/
1818

19-
package com.coffeebeans.springnativeawslambda.function.model;
19+
package com.coffeebeans.springnativeawslambda.model;
2020

2121
import jakarta.validation.constraints.NotBlank;
2222
import java.io.Serializable;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*
1717
*/
1818

19-
package com.coffeebeans.springnativeawslambda.function.model;
19+
package com.coffeebeans.springnativeawslambda.model;
2020

2121
import com.fasterxml.jackson.annotation.JsonProperty;
2222
import com.fasterxml.jackson.annotation.JsonProperty.Access;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
log4j.layout.jsonTemplate.timestampFormatPattern=yyyy-MM-dd'T'HH:mm:ss.SSSZz
2+
log4j.layout.jsonTemplate.timeZone=Australia/Sydney

0 commit comments

Comments
 (0)