Skip to content

Commit 5bf4232

Browse files
authored
Setup improvements (aws-samples#238)
* Added performance setup improvements
1 parent 7101212 commit 5bf4232

5 files changed

Lines changed: 28 additions & 26 deletions

File tree

labs/unicorn-store/infrastructure/cdk/src/main/java/com/unicorn/UnicornStoreApp.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.unicorn;
22

3-
import com.unicorn.core.DatabaseSetupStack;
43
import com.unicorn.core.InfrastructureStack;
54
import io.github.cdklabs.cdknag.AwsSolutionsChecks;
65
import io.github.cdklabs.cdknag.NagPackSuppression;
@@ -19,8 +18,6 @@ public static void main(final String[] args) {
1918
var infrastructureStack = new InfrastructureStack(app, "UnicornStoreInfrastructure", StackProps.builder()
2019
.build());
2120

22-
var dbSetupStack = new DatabaseSetupStack(app, "UnicornDatabaseSetupStack", StackProps.builder().build(), infrastructureStack);
23-
2421
var unicornStoreSpring = new UnicornStoreStack(app, "UnicornStoreSpringApp", StackProps.builder()
2522
.build(), infrastructureStack);
2623

@@ -41,12 +38,12 @@ public static void main(final String[] args) {
4138
new NagPackSuppression.Builder().id("AwsSolutions-VPC7").reason("Workshop environment does not need VPC flow logs").build(),
4239
new NagPackSuppression.Builder().id("AwsSolutions-SMG4").reason("Ephemeral workshop environment does not need to rotate secrets").build(),
4340
new NagPackSuppression.Builder().id("AwsSolutions-RDS2").reason("Workshop non-sensitive test database does not need encryption at rest").build(),
44-
new NagPackSuppression.Builder().id("AwsSolutions-APIG3").reason("Workshop API Gateways do not need AWS WAF assigned" ).build()
41+
new NagPackSuppression.Builder().id("AwsSolutions-APIG3").reason("Workshop API Gateways do not need AWS WAF assigned" ).build(),
42+
new NagPackSuppression.Builder().id("AwsSolutions-RDS13").reason("Workshop Database does not need backups" ).build()
4543
);
4644

4745
NagSuppressions.addStackSuppressions(infrastructureStack, suppression);
4846
NagSuppressions.addStackSuppressions(unicornStoreSpring, suppression);
49-
NagSuppressions.addStackSuppressions(dbSetupStack, suppression);
5047

5148
app.synth();
5249
}

labs/unicorn-store/infrastructure/cdk/src/main/java/com/unicorn/core/DatabaseSetupStack.java renamed to labs/unicorn-store/infrastructure/cdk/src/main/java/com/unicorn/constructs/DatabaseSetupConstruct.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
1-
package com.unicorn.core;
1+
package com.unicorn.constructs;
22

3-
import software.amazon.awscdk.*;
4-
import software.amazon.awscdk.services.ec2.*;
5-
import software.amazon.awscdk.services.events.EventBus;
3+
import com.unicorn.core.InfrastructureStack;
4+
import software.amazon.awscdk.CfnOutput;
5+
import software.amazon.awscdk.CfnOutputProps;
6+
import software.amazon.awscdk.Duration;
67
import software.amazon.awscdk.services.lambda.Code;
78
import software.amazon.awscdk.services.lambda.Function;
89
import software.amazon.awscdk.services.lambda.Runtime;
9-
import software.amazon.awscdk.services.rds.*;
1010
import software.constructs.Construct;
1111

1212
import java.util.HashMap;
1313
import java.util.List;
1414

15-
public class DatabaseSetupStack extends Stack {
15+
public class DatabaseSetupConstruct extends Construct{
1616

1717
private final InfrastructureStack infrastructureStack;
1818

19-
public DatabaseSetupStack(final Construct scope, final String id, final StackProps props,
20-
final InfrastructureStack infrastructureStack) {
21-
super(scope, id, props);
22-
this.infrastructureStack = infrastructureStack;
19+
public DatabaseSetupConstruct(final Construct scope, final String id) {
20+
super(scope, id);
21+
22+
this.infrastructureStack = (InfrastructureStack) scope;
2323

2424
var dbSetupLambdaFunction = createDbSetupLambdaFunction();
2525

26-
new CfnOutput(this, "DbSetupArn", CfnOutputProps.builder()
26+
new CfnOutput(scope, "DbSetupArn", CfnOutputProps.builder()
2727
.value(dbSetupLambdaFunction.getFunctionArn())
2828
.build());
2929
}

labs/unicorn-store/infrastructure/cdk/src/main/java/com/unicorn/core/InfrastructureStack.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
package com.unicorn.core;
22

3+
import com.unicorn.constructs.DatabaseSetupConstruct;
34
import software.amazon.awscdk.*;
45
import software.amazon.awscdk.services.ec2.*;
56
import software.amazon.awscdk.services.events.EventBus;
6-
import software.amazon.awscdk.services.lambda.Code;
7-
import software.amazon.awscdk.services.lambda.Function;
8-
import software.amazon.awscdk.services.lambda.Runtime;
9-
import software.amazon.awscdk.services.logs.LogRetention;
10-
import software.amazon.awscdk.services.logs.RetentionDays;
117
import software.amazon.awscdk.services.rds.*;
128
import software.constructs.Construct;
139

14-
import java.util.HashMap;
1510
import java.util.List;
1611

1712
public class InfrastructureStack extends Stack {
@@ -37,6 +32,8 @@ public InfrastructureStack(final Construct scope, final String id, final StackPr
3732
.vpc(vpc)
3833
.allowAllOutbound(true)
3934
.build());
35+
36+
new DatabaseSetupConstruct(this, "UnicornDatabaseConstruct");
4037
}
4138

4239

@@ -70,6 +67,7 @@ private DatabaseInstance createRDSPostgresInstance(IVpc vpc, DatabaseSecret data
7067
.engine(engine)
7168
.vpc(vpc)
7269
.allowMajorVersionUpgrade(true)
70+
.backupRetention(Duration.days(0))
7371
.databaseName("unicorns")
7472
.instanceIdentifier("UnicornInstance")
7573
.instanceType(InstanceType.of(InstanceClass.BURSTABLE3, InstanceSize.MEDIUM))

labs/unicorn-store/setup-infrastructure.sh

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
cd infrastructure/cdk
1313

1414
cdk bootstrap
15-
cdk deploy UnicornStoreInfrastructure --require-approval never
16-
cdk deploy UnicornDatabaseSetupStack --outputs-file target/output.json --require-approval never
15+
cdk deploy UnicornStoreInfrastructure --require-approval never --outputs-file target/output.json
1716

1817
# Execute the DB Setup function to create the table
19-
aws lambda invoke --function-name $(cat target/output.json | jq -r '.UnicornDatabaseSetupStack.DbSetupArn') /dev/stdout | cat;
18+
aws lambda invoke --function-name $(cat target/output.json | jq -r '.UnicornStoreInfrastructure.DbSetupArn') /dev/stdout | cat;

setup-cloud9.sh

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,12 @@ npm install -g artillery
3636
## Set JDK 11 as default
3737
sudo update-alternatives --set java /usr/lib/jvm/java-11-amazon-corretto.x86_64/bin/java
3838
sudo update-alternatives --set javac /usr/lib/jvm/java-11-amazon-corretto.x86_64/bin/javac
39-
export JAVA_HOME=/usr/lib/jvm/java-11-amazon-corretto.x86_64
39+
export JAVA_HOME=/usr/lib/jvm/java-11-amazon-corretto.x86_64
40+
41+
42+
## Pre-Download Maven dependencies for Unicorn Store
43+
cd ~/environment/aws-lambda-java-workshop/labs/unicorn-store
44+
./mvnw dependency:go-offline -f infrastructure/db-setup/pom.xml
45+
./mvnw dependency:go-offline -f software/alternatives/unicorn-store-basic/pom.xml
46+
./mvnw dependency:go-offline -f software/unicorn-store-spring/pom.xml
47+
./mvnw dependency:go-offline -f software/alternatives/unicorn-store-micronaut/pom.xml

0 commit comments

Comments
 (0)