Skip to content

Commit a01ceec

Browse files
committed
Set required property names dynamically
1 parent 3255c81 commit a01ceec

File tree

4 files changed

+23
-13
lines changed

4 files changed

+23
-13
lines changed

packages/cdk/resources/OpenSearchResources.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ import {OpenSearchCollection} from "../constructs/OpenSearchCollection"
33
import {Role} from "aws-cdk-lib/aws-iam"
44

55
export interface OpenSearchResourcesProps {
6-
bedrockExecutionRole: Role
7-
account: string
6+
readonly stackName: string
7+
readonly bedrockExecutionRole: Role
8+
readonly account: string
89
}
910

1011
export class OpenSearchResources extends Construct {
@@ -15,7 +16,7 @@ export class OpenSearchResources extends Construct {
1516

1617
// OpenSearch Serverless collection with vector search capabilities
1718
this.collection = new OpenSearchCollection(this, "OsCollection", {
18-
collectionName: "eps-assist-vector-db",
19+
collectionName: `${props.stackName}-vector-db`,
1920
principals: [
2021
props.bedrockExecutionRole.roleArn, // Bedrock Knowledge Base access
2122
`arn:aws:iam::${props.account}:root` // Account root access

packages/cdk/resources/Storage.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@ import {Construct} from "constructs"
22
import {Key} from "aws-cdk-lib/aws-kms"
33
import {S3Bucket} from "../constructs/S3Bucket"
44

5+
export interface StorageProps {
6+
readonly stackName: string
7+
}
8+
59
export class Storage extends Construct {
610
public readonly kbDocsBucket: S3Bucket
711
public readonly kbDocsKey: Key
812

9-
constructor(scope: Construct, id: string) {
13+
constructor(scope: Construct, id: string, props: StorageProps) {
1014
super(scope, id)
1115

1216
// Create customer-managed KMS key for knowledge base document encryption
@@ -17,7 +21,7 @@ export class Storage extends Construct {
1721

1822
// Create S3 bucket for knowledge base documents with encryption
1923
this.kbDocsBucket = new S3Bucket(this, "DocsBucket", {
20-
bucketName: "Docs",
24+
bucketName: `${props.stackName}-Docs`,
2125
kmsKey: this.kbDocsKey,
2226
versioned: true
2327
})

packages/cdk/resources/VectorKnowledgeBaseResources.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ import {CfnKnowledgeBase, CfnGuardrail, CfnDataSource} from "aws-cdk-lib/aws-bed
77
const EMBEDDING_MODEL = "amazon.titan-embed-text-v2:0"
88

99
export interface VectorKnowledgeBaseProps {
10-
docsBucket: Bucket
11-
bedrockExecutionRole: Role
12-
collectionArn: string
13-
vectorIndexName: string
10+
readonly stackName: string
11+
readonly docsBucket: Bucket
12+
readonly bedrockExecutionRole: Role
13+
readonly collectionArn: string
14+
readonly vectorIndexName: string
1415
}
1516

1617
export class VectorKnowledgeBaseResources extends Construct {
@@ -22,7 +23,7 @@ export class VectorKnowledgeBaseResources extends Construct {
2223

2324
// Create Bedrock guardrail for content filtering
2425
this.guardrail = new CfnGuardrail(this, "Guardrail", {
25-
name: "eps-assist-guardrail",
26+
name: `${props.stackName}-guardrail`,
2627
description: "Guardrail for EPS Assist Me Slackbot",
2728
blockedInputMessaging: "Your input was blocked.",
2829
blockedOutputsMessaging: "Your output was blocked.",
@@ -54,7 +55,7 @@ export class VectorKnowledgeBaseResources extends Construct {
5455

5556
// Create vector knowledge base for document retrieval
5657
this.knowledgeBase = new CfnKnowledgeBase(this, "VectorKB", {
57-
name: "eps-assist-kb",
58+
name: `${props.stackName}-kb`,
5859
description: "Knowledge base for EPS Assist Me Slackbot",
5960
roleArn: props.bedrockExecutionRole.roleArn,
6061
knowledgeBaseConfiguration: {
@@ -82,7 +83,7 @@ export class VectorKnowledgeBaseResources extends Construct {
8283
// Create S3 data source for knowledge base documents
8384
new CfnDataSource(this, "S3DataSource", {
8485
knowledgeBaseId: this.knowledgeBase.attrKnowledgeBaseId,
85-
name: "eps-assist-s3-datasource",
86+
name: `${props.stackName}-s3-datasource`,
8687
dataSourceConfiguration: {
8788
type: "S3",
8889
s3Configuration: {

packages/cdk/stacks/EpsAssistMeStack.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,9 @@ export class EpsAssistMeStack extends Stack {
5151
// - Storage needs to exist first so IamResources can reference the S3 bucket for policies
5252
// - IamResources creates the Bedrock role that needs S3 access permissions
5353
// - KMS permissions are added manually after both constructs exist
54-
const storage = new Storage(this, "Storage")
54+
const storage = new Storage(this, "Storage", {
55+
stackName: props.stackName
56+
})
5557

5658
// Create IAM Resources
5759
const iamResources = new IamResources(this, "IamResources", {
@@ -64,6 +66,7 @@ export class EpsAssistMeStack extends Stack {
6466

6567
// Create OpenSearch Resources
6668
const openSearchResources = new OpenSearchResources(this, "OpenSearchResources", {
69+
stackName: props.stackName,
6770
bedrockExecutionRole: iamResources.bedrockExecutionRole,
6871
account
6972
})
@@ -101,6 +104,7 @@ export class EpsAssistMeStack extends Stack {
101104

102105
// Create VectorKnowledgeBase construct after vector index
103106
const vectorKB = new VectorKnowledgeBaseResources(this, "VectorKB", {
107+
stackName: props.stackName,
104108
docsBucket: storage.kbDocsBucket.bucket,
105109
bedrockExecutionRole: iamResources.bedrockExecutionRole,
106110
collectionArn: `arn:aws:aoss:${region}:${account}:collection/${openSearchResources.collection.collection.attrId}`,

0 commit comments

Comments
 (0)