Skip to content

Commit db09638

Browse files
committed
Define the build of the project inside the CDK stack
1 parent 74c9f35 commit db09638

File tree

4 files changed

+38
-21
lines changed

4 files changed

+38
-21
lines changed

examples/powertools-examples-core/cdk/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ It is a [Maven](https://maven.apache.org/) based project, so you can open this p
2121

2222
The minimum to deploy the app should be
2323
```bash
24-
cdk bootstrap && mvn package && cdk deploy
24+
cdk bootstrap && cdk deploy
2525
```
2626

2727
## Useful commands

examples/powertools-examples-core/cdk/app/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44

55
<groupId>software.amazon.lambda.examples</groupId>
6-
<version>1.17.0-SNAPSHOT</version>
6+
<version>1.16.1</version>
77
<artifactId>powertools-examples-core-cdk</artifactId>
88
<packaging>jar</packaging>
99

examples/powertools-examples-core/cdk/infra/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<artifactId>exec-maven-plugin</artifactId>
2828
<version>3.0.0</version>
2929
<configuration>
30-
<mainClass>com.myorg.InfraApp</mainClass>
30+
<mainClass>cdk.CdkApp</mainClass>
3131
</configuration>
3232
</plugin>
3333
</plugins>
Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,21 @@
11
package cdk;
22

33

4-
import software.amazon.awscdk.services.lambda.Code;
5-
import software.amazon.awscdk.services.lambda.Function;
6-
import software.constructs.Construct;
7-
import software.amazon.awscdk.Stack;
8-
import software.amazon.awscdk.StackProps;
9-
// import software.amazon.awscdk.Duration;
10-
// import software.amazon.awscdk.services.sqs.Queue;
11-
import software.amazon.awscdk.App;
124
import software.amazon.awscdk.BundlingOptions;
13-
import software.amazon.awscdk.CfnOutput;
14-
import software.amazon.awscdk.CfnOutputProps;
15-
import software.constructs.Construct;
16-
import software.amazon.awscdk.DockerVolume;
175
import software.amazon.awscdk.Duration;
186
import software.amazon.awscdk.Stack;
197
import software.amazon.awscdk.StackProps;
8+
import software.amazon.awscdk.services.apigateway.LambdaIntegration;
9+
import software.amazon.awscdk.services.apigateway.RestApi;
2010
import software.amazon.awscdk.services.lambda.Code;
2111
import software.amazon.awscdk.services.lambda.Function;
22-
import software.amazon.awscdk.services.lambda.FunctionProps;
2312
import software.amazon.awscdk.services.lambda.Runtime;
24-
import software.amazon.awscdk.services.logs.RetentionDays;
13+
import software.amazon.awscdk.services.lambda.Tracing;
2514
import software.amazon.awscdk.services.s3.assets.AssetOptions;
15+
import software.constructs.Construct;
16+
17+
import java.util.Arrays;
18+
import java.util.List;
2619

2720
public class CdkStack extends Stack {
2821
public CdkStack(final Construct scope, final String id) {
@@ -34,11 +27,35 @@ public CdkStack(final Construct scope, final String id, final StackProps props)
3427

3528
// The code that defines your stack goes here
3629

37-
final Function hello = Function.Builder.create(this, "HelloWorldFunction")
30+
// CDK will use this command to package your Java Lambda
31+
List<String> functionPackageInstructions = Arrays.asList(
32+
"/bin/sh",
33+
"-c",
34+
"mvn package " +
35+
"&& cp /asset-input/target/powertools-examples-core-cdk-1.16.1.jar /asset-output/"
36+
);
37+
38+
final Function helloWorldFunction = Function.Builder.create(this, "HelloWorldFunction")
3839
.runtime(Runtime.JAVA_11) // execution environment
39-
.code(Code.fromAsset("../helloworld/", AssetOptions.builder()
40-
.build())) // code loaded from the "lambda" directory
41-
.handler("helloworld.App::handleRequest") // file is "hello", function is "handler"
40+
.memorySize(512)
41+
.timeout(Duration.seconds(20))
42+
.tracing(Tracing.ACTIVE)
43+
.code(Code.fromAsset("../app/", AssetOptions.builder()
44+
.bundling(BundlingOptions.builder()
45+
.image(Runtime.JAVA_11.getBundlingImage())
46+
.command(functionPackageInstructions)
47+
.build())
48+
.build()))
49+
.handler("helloworld.App")
50+
.build();
51+
52+
RestApi reastApi = RestApi.Builder.create(this, "HelloWorldApi")
53+
.description("API Gateway endpoint URL for Prod stage for Hello World function")
4254
.build();
55+
56+
reastApi.getRoot().resourceForPath("/hello")
57+
.addMethod("GET", LambdaIntegration.Builder.create(helloWorldFunction)
58+
.build());
59+
4360
}
4461
}

0 commit comments

Comments
 (0)