Skip to content

Commit 17578d0

Browse files
committed
feat(tf): Create AgentCore Memory
Create AgentCore Memory from Terraform and populate its ID into Parameter Store, rather than requiring prerequisite setup.
1 parent 500aa83 commit 17578d0

File tree

6 files changed

+59
-7
lines changed

6 files changed

+59
-7
lines changed

infra/main.tf

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,16 @@ module "container_image" {
77
repository_name = "langgraph-cx-agent"
88
}
99

10+
# Agent Memory
11+
resource "aws_bedrockagentcore_memory" "agent_memory" {
12+
name = "CxMemory"
13+
event_expiry_duration = 30
14+
}
15+
1016
# Bedrock Agent Role
1117
module "bedrock_role" {
1218
source = "./modules/agentcore-iam-role"
19+
agent_memory_arn = aws_bedrockagentcore_memory.agent_memory.arn
1320
container_repository_arn = module.container_image.ecr_repository_arn
1421
role_name = var.bedrock_role_name
1522
knowledge_base_id = module.kb_stack.knowledge_base_id
@@ -45,7 +52,7 @@ module "parameters" {
4552
guardrail_id = module.guardrail.guardrail_id
4653
user_pool_id = module.cognito.user_pool_id
4754
client_id = module.cognito.user_pool_client_id
48-
ac_stm_memory_id = var.ac_stm_memory_id
55+
ac_stm_memory_id = aws_bedrockagentcore_memory.agent_memory.id
4956

5057
depends_on = [
5158
module.kb_stack,

infra/modules/agentcore-iam-role/bedrock-agentcore-policy.tf

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,35 @@ resource "aws_iam_policy" "agentcore_permissions" {
148148
"arn:aws:bedrock-agentcore:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:workload-identity-directory/default",
149149
"arn:aws:bedrock-agentcore:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:workload-identity-directory/default/workload-identity/*"
150150
]
151+
},
152+
{
153+
Sid = "AccessMemory"
154+
Effect = "Allow"
155+
Action = [
156+
"bedrock-agentcore:BatchCreateMemoryRecords",
157+
"bedrock-agentcore:BatchDeleteMemoryRecords",
158+
"bedrock-agentcore:BatchUpdateMemoryRecords",
159+
"bedrock-agentcore:CreateEvent",
160+
"bedrock-agentcore:DeleteEvent",
161+
"bedrock-agentcore:DeleteMemoryRecord",
162+
"bedrock-agentcore:GetEvent",
163+
"bedrock-agentcore:GetMemory",
164+
"bedrock-agentcore:GetMemoryRecord",
165+
"bedrock-agentcore:ListActors",
166+
"bedrock-agentcore:ListEvents",
167+
"bedrock-agentcore:ListMemoryRecords",
168+
"bedrock-agentcore:ListSessions",
169+
"bedrock-agentcore:ListTagsForResource",
170+
"bedrock-agentcore:RetrieveMemoryRecords",
171+
"bedrock-agentcore:TagResource",
172+
]
173+
Resource = (
174+
var.agent_memory_arn == "" ?
175+
[
176+
"arn:aws:bedrock-agentcore:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:memory/*"
177+
] :
178+
[var.agent_memory_arn]
179+
)
151180
}
152181
]
153182
})

infra/modules/agentcore-iam-role/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,10 @@ variable "guardrail_id" {
1919
description = "Guardrail ID to restrict access to"
2020
type = string
2121
default = "*"
22+
}
23+
24+
variable "agent_memory_arn" {
25+
description = "ARN of specific AgentCore Memory to grant access (default: all)"
26+
default = ""
27+
type = string
2228
}

infra/modules/opensearch-serverless/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ terraform {
66
}
77
aws = {
88
source = "hashicorp/aws"
9-
version = "~> 5.0"
9+
version = ">= 5.0"
1010
}
1111
awscc = {
1212
source = "hashicorp/awscc"

infra/terraform.tf

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
terraform {
2+
backend "s3" {
3+
encrypt = true
4+
key = "sample-agentic-ai-foundation.tfstate"
5+
# TODO: Can we enable use_lockfile = true ?
6+
}
7+
8+
required_providers {
9+
aws = {
10+
source = "hashicorp/aws"
11+
# v6.18 added support for Bedrock AgentCore Memory
12+
version = ">= 6.18"
13+
}
14+
}
15+
}

infra/variables.tf

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,3 @@ variable "tavily_api_key" {
9595
type = string
9696
sensitive = true
9797
}
98-
99-
variable "ac_stm_memory_id" {
100-
description = "ID of the AC STM resource"
101-
type = string
102-
}

0 commit comments

Comments
 (0)