An agentic AI assistant on Amazon Bedrock that automates first-line IT support and ticket handling, backed by an Amazon RDS ticket database.
Plan – The agent breaks the high-level goal down into a sequence of smaller, actionable steps before executing anything.
LLM (the reasoning core)(Large language model ) – A large language model powers the agent's understanding and decision-making, shaped by model training and equipped with tools it can call on.
Memory – The agent draws on two types of memory: short-term/contextual memory (what's relevant within the current session or task) and long-term memory (a persistent knowledge base it can retrieve from across sessions).
Tools – To actually get things done, the agent uses external tools such as APIs, code execution, and internet access — extending it beyond just generating text.
Autonomous Actions –
Based on its plan, reasoning, memory, and tools, the
agent takes actions on its own rather than waiting for step-by-step
instructions from the user.
Feedback/Iterate – The agent evaluates the outcome of its actions, incorporates feedback, and loops back to refine its approach — making the whole process iterative rather than one-shot.
1. Prerequisites & Account Setup
•
An AWS account with access to Amazon Bedrock, RDS,
Lambda, API Gateway, IAM, CloudWatch, and (optionally) Cognito, SES/SNS, and
S3.
•
Enable model access in the Bedrock console under Model
access (e.g., a Claude model).
•
Choose a region where your chosen Bedrock model is
available.
2. Design the Ticketing Data Model in RDS
1.
Launch an Amazon RDS instance (PostgreSQL or MySQL)
inside a private VPC subnet.
2.
Create a database, e.g. it_support_db, with tables such
as:
◦
tickets — ticket_id, user_id, category, priority,
status, description, created_at, updated_at, assigned_agent
◦
users / agents
◦
ticket_history — audit trail of status changes
3.
Create a security group allowing inbound access only
from the Lambda functions' subnet/security group.
4.
Store DB credentials in AWS Secrets Manager — never
hardcode credentials in Lambda.
3. Build the Action Group Backend (Lambda)
Create the Lambda functions the
Bedrock Agent will call as action-group tools. Based on the reference use case
(VPN access provisioning), the first function looks like this:
provision_vpn_user
•
Input parameters: employee_name, employee_id
•
Uses one DynamoDB / RDS table (e.g. vpn_user_access)
storing employee_id, email, department, status, created_date
•
Parses Bedrock's parameter format — a list of
{"name": ..., "value": ...} objects
•
Validates both parameters are non-empty strings
•
Checks whether the user already exists by employee_name
•
If the user doesn't exist, creates a new record:
employee_name and employee_id from the parameters, email = employee_name +
"@acmecorp.com", department hard-coded (e.g.
"Engineering"), status = "active", created_date = current
UTC timestamp
•
Returns a success response with all user fields, a
was_reactivated flag, and an appropriate message
•
Uses the IAM role and resource-based policy statements
created for Bedrock Agent invocation
•
Returns every response in Bedrock Agent's expected
format (messageVersion + response structure)
•
Includes comprehensive error handling with logging,
parameter validation, and Bedrock-formatted error responses
Ticketing action functions
•
createTicket — inserts a new row into the tickets table
•
getTicketStatus — reads ticket status from RDS
•
updateTicket — appends work notes / updates status
(e.g. "User provisioned, issue resolved" or "User provisioned
but issue persists")
•
escalateTicket — raises priority/status and can trigger
a notification
Grant each Lambda's execution
role: rds-db:connect, secretsmanager:GetSecretValue, VPC access (ENI creation),
and CloudWatch Logs permissions.
4. Create the Bedrock Agent
5.
In the Bedrock console, go to Agents → Create Agent.
6.
Choose the foundation model for reasoning/orchestration
(e.g., a Claude model).
7.
Write the agent instructions — the system prompt
defining its role and behavior, for example:
◦
If a user is not found → the agent should ask whether
it should create a VPN account.
◦
Only if the user says yes → ask for their employee ID
(name was already asked) and call the Lambda.
◦
If the issue is fixed → update the ticket, appending
“User provisioned, issue resolved.”
◦
If the issue persists → update the ticket, appending
“User provisioned but issue persists.”
8.
Add an Action Group:
◦
Attach the OpenAPI schema describing each Lambda's
inputs/outputs (e.g. employee_name, employee_id).
◦
Link each action to its corresponding Lambda function.
9.
Optionally add a Knowledge Base (S3 + a vector store
such as OpenSearch Serverless) so the agent can answer common IT questions via
RAG before creating a ticket.
10.Configure Bedrock Guardrails to
filter unsafe or out-of-scope content.
11.Prepare the agent and test it in
the console's Playground / test chat pane, covering scenarios such as:
◦
User not found → says yes → provisioning works → ticket
closed.
◦
User not found → says yes → issue still broken → ticket
updated with notes.
◦
User not found → says no → ticket stays open.
5. IT Support Workflow the Agent Should Follow
The reference process flow the
agent automates is:
12.IT support performs basic
troubleshooting (restart, proxy check, internet test).
13.If the issue does not persist →
collect user details, create a support ticket, and close it.
14.If the issue persists → collect
user details, create a support ticket, and work on it:
◦
Check the access database.
◦
If the user is not listed → add the user to the
database.
◦
If the user is inactive → reactivate user access.
◦
If the user is active → confirm the issue exists.
15.Confirm whether the issue is
resolved:
◦
If not confirmed → loop back and re-check.
◦
If confirmed → close the ticket or update the ticket's
work notes, then end the process.
6. Expose the Agent to Users
•
Create an API Gateway (REST or HTTP API) endpoint that
invokes the Bedrock Agent via the InvokeAgent API, typically through a thin
Lambda proxy.
•
Secure the endpoint with Amazon Cognito or IAM auth for
employee identity.
•
Connect the endpoint to a front-end channel — a web
chat widget, Slack/Teams bot, or an internal support portal.
7. Human-in-the-Loop & Support Team View
•
Build (or reuse) a support dashboard reading from the
same RDS tables so human agents can pick up escalated tickets.
•
Use Amazon EventBridge rules on ticket status changes
to trigger Slack/Teams/email notifications via SNS or SES.
8. Monitoring, Security & Governance
•
CloudWatch dashboards and alarms for Lambda errors, RDS
CPU/connections, and Bedrock Agent invocation latency.
•
IAM least-privilege roles for every Lambda function and
the agent.
•
VPC isolation for RDS — no public accessibility.
•
Bedrock Guardrails and CloudTrail logging for
compliance and audit of agent responses.
•
Enable RDS automated backups, and Multi-AZ for
production workloads.
9. Testing & Iteration
•
Unit-test each action-group Lambda function against RDS
directly.
•
Run the three Playground scenarios from Section 4 end
to end.
•
Tune agent instructions based on failures — e.g.
missing slot-filling for ticket priority or employee ID.
10. Deployment
Use Infrastructure as Code (AWS
CloudFormation, CDK, or Terraform) to reproducibly deploy RDS, Lambda, IAM
roles, API Gateway, and the Bedrock Agent configuration across dev, staging,
and production environments.
No comments:
Post a Comment