Skip to content

Commit 1bdc91b

Browse files
author
Yuriy Bezsonov
committed
WIP
1 parent 9232c77 commit 1bdc91b

File tree

8 files changed

+54
-66
lines changed

8 files changed

+54
-66
lines changed

.kiro/specs/infra/deployment-guide.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ aws cloudformation deploy \
1616
--s3-bucket workshop-cfn-templates-1765640257
1717
```
1818

19+
## Architecture Fix Applied
20+
**Fixed bootstrap failure rollback issue**: Removed WaitCondition dependencies from critical outputs to match original working architecture. Stack will still fail if bootstrap fails, but will rollback cleanly without orphaned resources.
21+
1922
## Test & Debug
2023

2124
### Get Stack Outputs

infra/cdk/src/main/java/sample/com/WorkshopStack.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import software.amazon.awscdk.Stack;
44
import software.amazon.awscdk.StackProps;
5-
import software.amazon.awscdk.Aws;
65
import software.constructs.Construct;
76
import sample.com.constructs.*;
87
import sample.com.constructs.Ide.IdeProps;

infra/cdk/src/main/java/sample/com/constructs/CodeBuild.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package sample.com.constructs;
22

3-
import software.amazon.awscdk.Aws;
43
import software.amazon.awscdk.CustomResource;
54
import software.amazon.awscdk.Duration;
65
import software.amazon.awscdk.services.codebuild.*;
76
import software.amazon.awscdk.services.events.*;
87
import software.amazon.awscdk.services.events.targets.LambdaFunction;
98
import software.amazon.awscdk.services.iam.*;
109
import software.amazon.awscdk.services.lambda.*;
11-
import software.amazon.awscdk.services.lambda.Runtime;
1210
import software.amazon.awscdk.services.ec2.IVpc;
1311
import software.amazon.awscdk.services.ec2.SubnetSelection;
1412
import software.amazon.awscdk.services.ec2.SubnetType;

infra/cdk/src/main/java/sample/com/constructs/Database.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import software.amazon.awscdk.RemovalPolicy;
55
import software.amazon.awscdk.SecretValue;
66
import software.amazon.awscdk.SecretsManagerSecretOptions;
7-
import software.amazon.awscdk.Stack;
87
import software.amazon.awscdk.CustomResource;
98
import software.amazon.awscdk.services.ec2.IVpc;
109
import software.amazon.awscdk.services.ec2.Port;
@@ -115,7 +114,7 @@ public Database(final Construct scope, final String id, final IVpc vpc) {
115114
.code(Code.fromInline(loadFile("/lambda/database-setup.py")))
116115
.handler("index.lambda_handler")
117116
.runtime(Runtime.PYTHON_3_13)
118-
.functionName("workshop-db-setup-lambda")
117+
.functionName("workshop-db-setup")
119118
.timeout(Duration.minutes(3))
120119
.vpc(vpc)
121120
.securityGroups(List.of(databaseSecurityGroup))

infra/cdk/src/main/java/sample/com/constructs/Ide.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -328,22 +328,18 @@ public Ide(final Construct scope, final String id, final IdeProps props) {
328328
.build();
329329
waitCondition.getNode().addDependency(ec2InstanceResource);
330330

331-
// CloudFront doesn't need to wait for bootstrap - it's just infrastructure
332-
333-
// Outputs - these should only be created if bootstrap succeeds
334331
var ideUrlOutput = CfnOutput.Builder.create(this, "Url")
335332
.value("https://" + distribution.getDistributionDomainName())
336333
.description("Workshop IDE Url")
337334
.exportName(instanceName + "-url")
338335
.build();
339-
ideUrlOutput.getNode().addDependency(waitCondition);
340336

341337
var idePasswordOutput = CfnOutput.Builder.create(this, "Password")
342338
.value(getIdePassword(instanceName))
343339
.description("Workshop IDE Password")
344340
.exportName(instanceName + "-password")
345341
.build();
346-
idePasswordOutput.getNode().addDependency(waitCondition);
342+
idePasswordOutput.getNode().addDependency(ideSecretsManagerPassword);
347343
}
348344

349345
public SecurityGroup getIdeSecurityGroup() {

infra/cdk/src/main/java/sample/com/constructs/Roles.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
11
package sample.com.constructs;
22

3-
import software.amazon.awscdk.services.iam.*;
43
import software.constructs.Construct;
5-
import org.json.JSONObject;
6-
7-
import java.io.IOException;
8-
import java.nio.file.Files;
9-
import java.nio.file.Path;
10-
import java.util.List;
114

125
public class Roles extends Construct {
136

infra/cfn/base-stack.yaml

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -714,25 +714,7 @@ Resources:
714714
Fn::GetAtt:
715715
- IdeInstanceLauncherFunction803C5A2A
716716
- Arn
717-
VolumeSize: "50"
718-
SubnetIds:
719-
Fn::Join:
720-
- ""
721-
- - Ref: VpcWorkshopVpcPublicSubnet1SubnetBCB45C45
722-
- ","
723-
- Ref: VpcWorkshopVpcPublicSubnet2SubnetF8F9426F
724-
SecurityGroupIds:
725-
Fn::Join:
726-
- ""
727-
- - Fn::GetAtt:
728-
- IdeIdeSecurityGroup5C503C8A
729-
- GroupId
730-
- ","
731-
- Fn::GetAtt:
732-
- IdeIdeInternalSecurityGroupD5D3B421
733-
- GroupId
734-
ImageId:
735-
Ref: SsmParameterValueawsserviceamiamazonlinuxlatestal2023amikernel61x8664C96584B6F00A464EAD1953AFF4B05118Parameter
717+
InstanceTypes: m5.xlarge,m6i.xlarge,t3.xlarge
736718
UserData:
737719
Fn::Base64:
738720
Fn::Join:
@@ -866,12 +848,30 @@ Resources:
866848
"
867849
exit 1
868850
fi
869-
InstanceTypes: m5.xlarge,m6i.xlarge,t3.xlarge
870-
InstanceName: ide
851+
ImageId:
852+
Ref: SsmParameterValueawsserviceamiamazonlinuxlatestal2023amikernel61x8664C96584B6F00A464EAD1953AFF4B05118Parameter
853+
SecurityGroupIds:
854+
Fn::Join:
855+
- ""
856+
- - Fn::GetAtt:
857+
- IdeIdeSecurityGroup5C503C8A
858+
- GroupId
859+
- ","
860+
- Fn::GetAtt:
861+
- IdeIdeInternalSecurityGroupD5D3B421
862+
- GroupId
863+
SubnetIds:
864+
Fn::Join:
865+
- ""
866+
- - Ref: VpcWorkshopVpcPublicSubnet1SubnetBCB45C45
867+
- ","
868+
- Ref: VpcWorkshopVpcPublicSubnet2SubnetF8F9426F
869+
VolumeSize: "50"
871870
IamInstanceProfileArn:
872871
Fn::GetAtt:
873872
- IdeIdeInstanceProfile8BD997EA
874873
- Arn
874+
InstanceName: ide
875875
UpdateReplacePolicy: Delete
876876
DeletionPolicy: Delete
877877
IdeIdeEipAssociation6C6C215D:
@@ -1241,12 +1241,12 @@ Resources:
12411241
Environment:
12421242
ComputeType: BUILD_GENERAL1_MEDIUM
12431243
EnvironmentVariables:
1244-
- Name: GIT_BRANCH
1245-
Type: PLAINTEXT
1246-
Value: new-ws-infra
12471244
- Name: TEMPLATE_TYPE
12481245
Type: PLAINTEXT
12491246
Value: base
1247+
- Name: GIT_BRANCH
1248+
Type: PLAINTEXT
1249+
Value: new-ws-infra
12501250
Image: aws/codebuild/amazonlinux2-x86_64-standard:5.0
12511251
ImagePullCredentialsType: CODEBUILD
12521252
PrivilegedMode: false
@@ -1489,13 +1489,13 @@ Resources:
14891489
Fn::GetAtt:
14901490
- CodeBuildStartLambdaFunction8349284F
14911491
- Arn
1492-
ProjectName:
1493-
Ref: CodeBuildProjectA0FF5539
1492+
ContentHash: "1765715394125"
14941493
CodeBuildIamRoleArn:
14951494
Fn::GetAtt:
14961495
- CodeBuildCodeBuildRoleBA9C6D5C
14971496
- Arn
1498-
ContentHash: "1765710511221"
1497+
ProjectName:
1498+
Ref: CodeBuildProjectA0FF5539
14991499
DependsOn:
15001500
- CodeBuildBuildCompleteRuleAllowEventRuleWorkshopStackCodeBuildReportLambdaFunctionD77C6091DA4A4BD8
15011501
- CodeBuildBuildCompleteRule06AAF17D

infra/cfn/java-on-aws-stack.yaml

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -734,8 +734,12 @@ Resources:
734734
Fn::GetAtt:
735735
- IdeInstanceLauncherFunction803C5A2A
736736
- Arn
737-
ImageId:
738-
Ref: SsmParameterValueawsserviceamiamazonlinuxlatestal2023amikernel61x8664C96584B6F00A464EAD1953AFF4B05118Parameter
737+
SubnetIds:
738+
Fn::Join:
739+
- ""
740+
- - Ref: VpcWorkshopVpcPublicSubnet1SubnetBCB45C45
741+
- ","
742+
- Ref: VpcWorkshopVpcPublicSubnet2SubnetF8F9426F
739743
SecurityGroupIds:
740744
Fn::Join:
741745
- ""
@@ -746,19 +750,8 @@ Resources:
746750
- Fn::GetAtt:
747751
- IdeIdeInternalSecurityGroupD5D3B421
748752
- GroupId
749-
SubnetIds:
750-
Fn::Join:
751-
- ""
752-
- - Ref: VpcWorkshopVpcPublicSubnet1SubnetBCB45C45
753-
- ","
754-
- Ref: VpcWorkshopVpcPublicSubnet2SubnetF8F9426F
755-
VolumeSize: "50"
756-
IamInstanceProfileArn:
757-
Fn::GetAtt:
758-
- IdeIdeInstanceProfile8BD997EA
759-
- Arn
760-
InstanceName: ide
761-
InstanceTypes: m5.xlarge,m6i.xlarge,t3.xlarge
753+
ImageId:
754+
Ref: SsmParameterValueawsserviceamiamazonlinuxlatestal2023amikernel61x8664C96584B6F00A464EAD1953AFF4B05118Parameter
762755
UserData:
763756
Fn::Base64:
764757
Fn::Join:
@@ -892,6 +885,13 @@ Resources:
892885
"
893886
exit 1
894887
fi
888+
InstanceTypes: m5.xlarge,m6i.xlarge,t3.xlarge
889+
InstanceName: ide
890+
IamInstanceProfileArn:
891+
Fn::GetAtt:
892+
- IdeIdeInstanceProfile8BD997EA
893+
- Arn
894+
VolumeSize: "50"
895895
UpdateReplacePolicy: Delete
896896
DeletionPolicy: Delete
897897
IdeIdeEipAssociation6C6C215D:
@@ -1261,12 +1261,12 @@ Resources:
12611261
Environment:
12621262
ComputeType: BUILD_GENERAL1_MEDIUM
12631263
EnvironmentVariables:
1264-
- Name: TEMPLATE_TYPE
1265-
Type: PLAINTEXT
1266-
Value: java-on-aws
12671264
- Name: GIT_BRANCH
12681265
Type: PLAINTEXT
12691266
Value: new-ws-infra
1267+
- Name: TEMPLATE_TYPE
1268+
Type: PLAINTEXT
1269+
Value: java-on-aws
12701270
Image: aws/codebuild/amazonlinux2-x86_64-standard:5.0
12711271
ImagePullCredentialsType: CODEBUILD
12721272
PrivilegedMode: false
@@ -1472,12 +1472,12 @@ Resources:
14721472
Description: workshop-setup build complete
14731473
EventPattern:
14741474
detail:
1475-
project-name:
1476-
- Ref: CodeBuildProjectA0FF5539
14771475
build-status:
14781476
- SUCCEEDED
14791477
- FAILED
14801478
- STOPPED
1479+
project-name:
1480+
- Ref: CodeBuildProjectA0FF5539
14811481
detail-type:
14821482
- CodeBuild Build State Change
14831483
source:
@@ -1513,9 +1513,9 @@ Resources:
15131513
Fn::GetAtt:
15141514
- CodeBuildCodeBuildRoleBA9C6D5C
15151515
- Arn
1516+
ContentHash: "1765715399417"
15161517
ProjectName:
15171518
Ref: CodeBuildProjectA0FF5539
1518-
ContentHash: "1765710516249"
15191519
DependsOn:
15201520
- CodeBuildBuildCompleteRuleAllowEventRuleWorkshopStackCodeBuildReportLambdaFunctionD77C6091DA4A4BD8
15211521
- CodeBuildBuildCompleteRule06AAF17D
@@ -1902,7 +1902,7 @@ Resources:
19021902
responseData = {'Error': tb_err}
19031903
finally:
19041904
cfnresponse.send(event, context, status, responseData, 'CustomResourcePhysicalID')
1905-
FunctionName: workshop-db-setup-lambda
1905+
FunctionName: workshop-db-setup
19061906
Handler: index.lambda_handler
19071907
Role:
19081908
Fn::GetAtt:

0 commit comments

Comments
 (0)