You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**CodeBuild**: Creates CodeBuild project for AWS service-linked role creation
133
133
**Lambda**: Reusable construct for consistent Lambda function creation with inline Python code
134
-
**PerformanceAnalysis**: Creates S3 bucket, Lambda functions, and API Gateway for thread dump and profiling analysis
134
+
**WorkshopBucket**: Creates shared S3 bucket and SSM parameter for workshop data (uses prefix)
135
+
**ThreadAnalysis**: Creates thread dump Lambda and API Gateway for thread analysis (uses prefix)
136
+
**JvmAnalysis**: Creates ECR repository and Pod Identity role for jvm-analysis-service (app-specific naming)
135
137
**Unicorn**: Creates ECR repository and IAM roles for workshop applications (uses unicorn* naming for workshop content compatibility)
136
138
137
139
#### CDK Construct Naming Convention
@@ -147,26 +149,70 @@ This convention eliminates CloudFormation logical ID duplication and ensures mai
147
149
148
150
#### AWS Resource Naming Convention
149
151
150
-
All AWS resources follow a consistent "workshop-" prefix pattern for operational clarity:
152
+
All AWS resources follow a consistent prefix pattern for operational clarity. The prefix is defined as a simple String constant at the beginning of WorkshopStack constructor (defaults to "workshop").
-**Easy filtering** in AWS Console and CLI using `workshop-*` patterns
213
+
-**Easy filtering** in AWS Console and CLI using `{prefix}-*` patterns
214
+
-**Simple customization** by editing one string constant
215
+
-**Reusable templates** by regenerating with different prefix
170
216
-**Operational management** through consistent resource identification
171
217
-**Cost tracking** and monitoring of workshop-related resources
172
218
-**Automated cleanup** and maintenance scripts
@@ -592,6 +638,26 @@ public class BuildConfig {
592
638
*For any* EKS cluster and database creation, they should depend only on VPC and deploy in parallel without unnecessary dependencies
593
639
**Validates: Requirements 19.1, 19.2, 19.3**
594
640
641
+
### Property 26: Configurable Prefix Pattern
642
+
*For any* AWS resource created by Vpc, Ide, CodeBuild, Database, or Eks constructs, it should use the prefix string defined in WorkshopStack constructor for all resource names
Copy file name to clipboardExpand all lines: .kiro/specs/infra/requirements.md
+47Lines changed: 47 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -295,3 +295,50 @@ This document specifies the requirements for creating a new AWS workshop infrast
295
295
4. WHEN bootstrap logging is configured, THE system SHALL use "workshop-ide-bootstrap-{timestamp}" pattern for unique log group names
296
296
5. WHEN AWS resources are named, THE system SHALL follow the pattern "workshop-{component}-{function}" for operational consistency
297
297
298
+
### Requirement 22
299
+
300
+
**User Story:** As a workshop developer, I want configurable resource name prefixes defined in WorkshopStack, so that I can easily customize all resource names by changing a single string constant and regenerating templates.
301
+
302
+
#### Acceptance Criteria
303
+
304
+
1. WHEN WorkshopStack constructor begins, THE system SHALL define a prefix String constant at the very beginning (default "workshop")
305
+
2. WHEN prefix is defined, THE system SHALL pass it to all construct Props builders that create AWS resources
306
+
3. WHEN constructs create AWS resources, THE system SHALL use the prefix for all resource names following pattern "{prefix}-{component}-{function}"
307
+
4. WHEN templates need different prefixes, THE developer SHALL edit the prefix string in WorkshopStack.java and run `npm run generate`
308
+
5. WHEN CloudFormation template is generated, THE system SHALL have all resource names fully resolved with the prefix value (no runtime parameters)
309
+
6. WHEN Unicorn construct creates resources, THE system SHALL use its own "unicorn*" naming convention (exception for app-specific compatibility)
310
+
7. WHEN JvmAnalysis construct creates resources, THE system SHALL use "jvm-analysis-*" naming convention (exception for app-specific resources)
311
+
312
+
313
+
314
+
### Requirement 23
315
+
316
+
**User Story:** As a workshop developer, I want shared workshop resources in a dedicated construct, so that S3 bucket and SSM parameter can be reused across multiple features.
317
+
318
+
#### Acceptance Criteria
319
+
320
+
1. WHEN WorkshopBucket construct is created, THE system SHALL create an S3 bucket with name pattern `{prefix}-bucket-{account}-{region}-{timestamp}`
321
+
2. WHEN WorkshopBucket construct is created, THE system SHALL create an SSM parameter `{prefix}-bucket-name` for bucket name discovery
322
+
3. WHEN WorkshopBucket is used by other constructs, THE system SHALL pass the bucket reference for permissions and configuration
323
+
324
+
### Requirement 24
325
+
326
+
**User Story:** As a workshop developer, I want thread dump analysis in a dedicated construct, so that thread dump Lambda and API Gateway are clearly separated from other analysis features.
327
+
328
+
#### Acceptance Criteria
329
+
330
+
1. WHEN ThreadAnalysis construct is created, THE system SHALL use prefix for all resource names (infrastructure pattern)
331
+
2. WHEN ThreadAnalysis creates Lambda, THE system SHALL name it `{prefix}-thread-dump-lambda`
332
+
3. WHEN ThreadAnalysis creates API Gateway, THE system SHALL name it `{prefix}-thread-dump-api`
333
+
4. WHEN ThreadAnalysis creates IAM role, THE system SHALL name it `{prefix}-thread-dump-lambda-role`
334
+
5. WHEN ThreadAnalysis creates security group, THE system SHALL name it `{prefix}-thread-dump-lambda-sg`
335
+
336
+
### Requirement 25
337
+
338
+
**User Story:** As a workshop developer, I want JVM profiling analysis in a dedicated construct, so that ECR repository and Pod Identity role are clearly separated as app-specific resources.
339
+
340
+
#### Acceptance Criteria
341
+
342
+
1. WHEN JvmAnalysis construct is created, THE system SHALL use app-specific naming (no prefix)
343
+
2. WHEN JvmAnalysis creates ECR repository, THE system SHALL name it `jvm-analysis-service`
344
+
3. WHEN JvmAnalysis creates Pod Identity role, THE system SHALL name it `jvm-analysis-service-eks-pod-role`
0 commit comments