-
Notifications
You must be signed in to change notification settings - Fork 70
Expand file tree
/
Copy pathapp.py
More file actions
71 lines (63 loc) · 2.37 KB
/
Copy pathapp.py
File metadata and controls
71 lines (63 loc) · 2.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env python3
import os
import aws_cdk as cdk
from aws_cdk import Tags
from infrastructure.opensearch_nextgen_stack import OpensearchNextgenStack
from infrastructure.knowledge_base_stack import KnowledgeBaseStack
from infrastructure.agentcore_stack import AgentCoreStack
from infrastructure.cognito_stack import CognitoStack
from infrastructure.cloudfront_hosting_stack import CloudFrontHostingStack
app = cdk.App()
account_id = os.getenv("CDK_DEFAULT_ACCOUNT")
region = os.getenv("CDK_DEFAULT_REGION")
env = cdk.Environment(account=account_id, region=region)
env_name = app.node.try_get_context("environment_name")
# Stack 1: AOSS Collection + Index Creator Lambda
kb_role_arn = f"arn:aws:iam::{account_id}:role/srd-kb-role-{env_name}"
oss_stack = OpensearchNextgenStack(
app, f"SRD-AOSS-{env_name}",
kb_role_arn=kb_role_arn,
env=env,
)
Tags.of(oss_stack).add("project", "serverless-rag-demo-v2")
# Stack 2: Bedrock Knowledge Base
kb_stack = KnowledgeBaseStack(
app, f"SRD-KB-{env_name}",
collection_arn=oss_stack.collection_arn,
collection_endpoint=oss_stack.collection_endpoint,
env=env,
)
kb_stack.add_dependency(oss_stack)
Tags.of(kb_stack).add("project", "serverless-rag-demo-v2")
# Stack 3: AgentCore Runtimes
agentcore_stack = AgentCoreStack(
app, f"SRD-AgentCore-{env_name}",
knowledge_base_id=kb_stack.knowledge_base_id,
data_bucket_name=kb_stack.data_bucket_name,
collection_endpoint=oss_stack.collection_endpoint,
env=env,
)
agentcore_stack.add_dependency(kb_stack)
Tags.of(agentcore_stack).add("project", "serverless-rag-demo-v2")
# Stack 4: Cognito Auth
cognito_stack = CognitoStack(
app, f"SRD-Auth-{env_name}",
data_bucket_name=kb_stack.data_bucket_name,
knowledge_base_id=kb_stack.knowledge_base_id,
data_source_id=kb_stack.data_source_id,
env=env,
)
cognito_stack.add_dependency(kb_stack)
Tags.of(cognito_stack).add("project", "serverless-rag-demo-v2")
# Stack 5: CloudFront Hosting (depends on Cognito for runtime-config)
cf_stack = CloudFrontHostingStack(
app, f"SRD-CloudFront-{env_name}",
cognito_user_pool_id=cognito_stack.user_pool_id,
cognito_client_id=cognito_stack.client_id,
cognito_identity_pool_id=cognito_stack.identity_pool_id,
env=env,
)
cf_stack.add_dependency(cognito_stack)
cf_stack.add_dependency(agentcore_stack)
Tags.of(cf_stack).add("project", "serverless-rag-demo-v2")
app.synth()