@@ -15,12 +15,11 @@ import * as cdk from "aws-cdk-lib"
1515import * as iam from "aws-cdk-lib/aws-iam"
1616import * as ops from "aws-cdk-lib/aws-opensearchserverless"
1717import * as cr from "aws-cdk-lib/custom-resources"
18- import * as ssm from "aws-cdk-lib/aws-ssm"
19- import * as secretsmanager from "aws-cdk-lib/aws-secretsmanager"
2018import { nagSuppressions } from "../nagSuppressions"
2119import { Apis } from "../resources/Apis"
2220import { Functions } from "../resources/Functions"
2321import { Storage } from "../resources/Storage"
22+ import { Secrets } from "../resources/Secrets"
2423
2524const EMBEDDING_MODEL = "amazon.titan-embed-text-v2:0"
2625const COLLECTION_NAME = "eps-assist-vector-db"
@@ -51,36 +50,10 @@ export class EpsAssistMeStack extends Stack {
5150 throw new Error ( "Missing required context variables. Please provide slackBotToken and slackSigningSecret" )
5251 }
5352
54- // Create secrets in Secrets Manager
55- const slackBotTokenSecret = new secretsmanager . Secret ( this , "SlackBotTokenSecret" , {
56- secretName : "/eps-assist/slack/bot-token" ,
57- description : "Slack Bot OAuth Token for EPS Assist" ,
58- secretStringValue : cdk . SecretValue . unsafePlainText ( JSON . stringify ( {
59- token : slackBotToken
60- } ) )
61- } )
62-
63- const slackBotSigningSecret = new secretsmanager . Secret ( this , "SlackBotSigningSecret" , {
64- secretName : "/eps-assist/slack/signing-secret" ,
65- description : "Slack Signing Secret" ,
66- secretStringValue : cdk . SecretValue . unsafePlainText ( JSON . stringify ( {
67- secret : slackSigningSecret
68- } ) )
69- } )
70-
71- // Create SSM parameters that reference the secrets
72- const slackBotTokenParameter = new ssm . StringParameter ( this , "SlackBotTokenParameter" , {
73- parameterName : "/eps-assist/slack/bot-token/parameter" ,
74- stringValue : `{{resolve:secretsmanager:${ slackBotTokenSecret . secretName } }}` ,
75- description : "Reference to Slack Bot Token in Secrets Manager" ,
76- tier : ssm . ParameterTier . STANDARD
77- } )
78-
79- const slackSigningSecretParameter = new ssm . StringParameter ( this , "SlackSigningSecretParameter" , {
80- parameterName : "/eps-assist/slack/signing-secret/parameter" ,
81- stringValue : `{{resolve:secretsmanager:${ slackBotSigningSecret . secretName } }}` ,
82- description : "Reference to Slack Signing Secret in Secrets Manager" ,
83- tier : ssm . ParameterTier . STANDARD
53+ // Create Secrets construct
54+ const secrets = new Secrets ( this , "Secrets" , {
55+ slackBotToken,
56+ slackSigningSecret
8457 } )
8558
8659 // Create an IAM policy to invoke Bedrock models and access titan v1 embedding model
@@ -272,16 +245,16 @@ export class EpsAssistMeStack extends Stack {
272245 logRetentionInDays,
273246 logLevel,
274247 createIndexFunctionRole,
275- slackBotTokenParameter,
276- slackSigningSecretParameter,
248+ slackBotTokenParameter : secrets . slackBotTokenParameter ,
249+ slackSigningSecretParameter : secrets . slackSigningSecretParameter ,
277250 guardrailId : GUARD_RAIL_ID ,
278251 guardrailVersion : GUARD_RAIL_VERSION ,
279252 collectionId : osCollection . attrId ,
280253 knowledgeBaseId : bedrockkb . attrKnowledgeBaseId ,
281254 region,
282255 account,
283- slackBotTokenSecret,
284- slackBotSigningSecret
256+ slackBotTokenSecret : secrets . slackBotTokenSecret ,
257+ slackBotSigningSecret : secrets . slackBotSigningSecret
285258 } )
286259
287260 // Define OpenSearchServerless access policy to access the index and collection
0 commit comments