|
4 | 4 | StackProps, |
5 | 5 | CfnOutput |
6 | 6 | } from "aws-cdk-lib" |
| 7 | +import {EventType} from "aws-cdk-lib/aws-s3" |
| 8 | +import {LambdaDestination} from "aws-cdk-lib/aws-s3-notifications" |
7 | 9 | import {nagSuppressions} from "../nagSuppressions" |
8 | 10 | import {Apis} from "../resources/Apis" |
9 | 11 | import {Functions} from "../resources/Functions" |
@@ -82,12 +84,14 @@ export class EpsAssistMeStack extends Stack { |
82 | 84 | logLevel, |
83 | 85 | createIndexManagedPolicy: iamResources.createIndexManagedPolicy, |
84 | 86 | slackBotManagedPolicy: iamResources.slackBotManagedPolicy, |
| 87 | + syncKnowledgeBaseManagedPolicy: iamResources.syncKnowledgeBaseManagedPolicy, |
85 | 88 | slackBotTokenParameter: secrets.slackBotTokenParameter, |
86 | 89 | slackSigningSecretParameter: secrets.slackSigningSecretParameter, |
87 | 90 | guardrailId: "", // Will be set after vector KB is created |
88 | 91 | guardrailVersion: "", // Will be set after vector KB is created |
89 | 92 | collectionId: openSearchResources.collection.collection.attrId, |
90 | 93 | knowledgeBaseId: "", // Will be set after vector KB is created |
| 94 | + dataSourceId: "", // Will be set after vector KB is created |
91 | 95 | region, |
92 | 96 | account, |
93 | 97 | slackBotTokenSecret: secrets.slackBotTokenSecret, |
@@ -119,6 +123,22 @@ export class EpsAssistMeStack extends Stack { |
119 | 123 | functions.functions.slackBot.function.addEnvironment("GUARD_RAIL_VERSION", vectorKB.guardrail.attrVersion) |
120 | 124 | functions.functions.slackBot.function.addEnvironment("KNOWLEDGEBASE_ID", vectorKB.knowledgeBase.attrKnowledgeBaseId) |
121 | 125 |
|
| 126 | + // Update SyncKnowledgeBase Lambda environment variables with vector KB info |
| 127 | + functions.functions.syncKnowledgeBase.function.addEnvironment( |
| 128 | + "KNOWLEDGEBASE_ID", |
| 129 | + vectorKB.knowledgeBase.attrKnowledgeBaseId |
| 130 | + ) |
| 131 | + functions.functions.syncKnowledgeBase.function.addEnvironment( |
| 132 | + "DATA_SOURCE_ID", |
| 133 | + vectorKB.dataSource.attrDataSourceId |
| 134 | + ) |
| 135 | + |
| 136 | + // Add S3 event notification to trigger sync function |
| 137 | + storage.kbDocsBucket.bucket.addEventNotification( |
| 138 | + EventType.OBJECT_CREATED, |
| 139 | + new LambdaDestination(functions.functions.syncKnowledgeBase.function) |
| 140 | + ) |
| 141 | + |
122 | 142 | // Create Apis and pass the Lambda function |
123 | 143 | const apis = new Apis(this, "Apis", { |
124 | 144 | stackName: props.stackName, |
|
0 commit comments