AWS · Kiro AI · CloudFormation · Bedrock · HIPAA

EARE on AWS — Full Production
Deployment Generated by AI

Using Kiro (an AI-powered IDE built on Claude) to generate a complete, production-grade AWS deployment from a spec — CloudFormation nested stacks, HIPAA-compliant networking, multi-agent Bedrock orchestration, MCP server infrastructure on ECS Fargate, and five interactive dashboards — without writing a line of IaC manually.

9
CFN nested stacks
5
Bedrock agents
2
MCP servers (ECS)
5
HTML dashboards
8
Lambda functions
0
Manual IaC written

Kiro generated the entire deployment from a product spec

The EARE AWS deployment wasn't built the traditional way — writing CloudFormation YAML module by module, hand-coding Lambda functions, and manually wiring IAM roles. It was generated by Kiro, an AI-powered development environment, from a structured product requirements document and design specification.

Kiro · AI-Powered Development Environment

Kiro is a spec-driven AI IDE built on Claude. The workflow: write a requirements document and design spec describing what you want to build — architecture decisions, data models, API contracts, security posture, observability requirements. Kiro reads the spec and generates the implementation: CloudFormation templates, Python Lambda functions, ECS Dockerfiles, deployment scripts, test suites, and runbooks.

For this deployment, the design spec described 13 infrastructure modules, 8 Lambda functions, 2 containerized MCP servers, a 5-agent Bedrock multi-agent swarm, 5 HTML dashboards, and a full observability stack. Kiro generated all of it from that spec — not as pseudocode or stubs, but as production-ready, deployable artifacts with least-privilege IAM, HIPAA tagging, structured logging, CloudWatch alarms, and smoke tests.

🏗️

CloudFormation Nested Stacks

9 modules: networking, ingestion, ETL, masking, databases, compute, CDN, AI layer, security — plus orchestrator. Full parameter files for dev/staging/prod.

IaC · CloudFormation
🌐

HIPAA-Compliant VPC

10.0.0.0/16 VPC, public/private subnet isolation, 2 NAT Gateways, 5 VPC endpoints, 3 security groups, VPC Flow Logs — all tagged HIPAA=true.

AWS · Networking

Lambda Functions (8)

API handlers (health, applications, recommendations, reviews, pipeline trigger), ingestion validator, Neptune loader, vector indexer — all Python 3.11, VPC-placed.

Python 3.11
🔄

Step Functions ETL Pipeline

12-state normalization workflow: file type detection, Glue DataBrew jobs, Textract PDF extraction, Macie PHI scanning, Comprehend Medical, masking, graph/vector routing.

AWS · Step Functions
🐳

MCP Server Containers (2)

Graph MCP Server (Gremlin → 4 tools) and Vector MCP Server (OpenSearch → 4 tools) on ECS Fargate. Dockerfiles, requirements, server.py — all generated.

ECS Fargate · Python
🤖

Bedrock Multi-Agent Swarm

Orchestrator + 4 specialist agents (Telemetry, Dependency, Procurement, Provisioning) + Synthesizer. Action group definitions, model IDs, timeout configs, error handling.

Amazon Bedrock · Claude
📊

5 Interactive HTML Dashboards

6R Output, Data Quality scoring, Custom Weights simulator, ROI Engine, and Human-in-the-Loop Review — all Chart.js, Tailwind CSS, API Gateway + static fallback.

HTML · Chart.js · Tailwind
🔐

IAM Roles (8, Least-Privilege)

Per-function IAM roles with explicit allow-only policies. Read-only for MCP servers. No wildcard * actions. Secrets Manager via VPC endpoint only.

IAM · Secrets Manager
📡

Observability Stack

CloudWatch log groups (5 categories), 5 metric alarms (Lambda errors, SFN failures, Neptune CPU, API 5xx, ingestion staleness), structured log format, SNS alerts.

CloudWatch · SNS
🚀

Deployment Scripts + Makefile

deploy-web-aws.sh (S3 sync + CloudFront invalidation + config.js injection), smoke-test-aws.sh (4 connectivity checks), validate-env-aws.sh, load-sample-data.py.

Bash · Python · Make

Enterprise AI rationalization platform — full cloud stack

EARE (Enterprise Agentic Rationalization Engine) processes clinical/COTS application portfolios through the 6Rs framework. The AWS deployment runs the complete pipeline: data ingestion, ETL and PHI masking, graph and vector database population, multi-agent AI analysis, and five dashboards consumed by enterprise architects.

Edge & Frontend
Public-facing layer
CloudFront distribution API Gateway REST API (8 routes) S3 static site (5 dashboards) config.js template → API URL injection Custom 404 → index.html
Networking
HIPAA-compliant VPC
10.0.0.0/16 VPC · 2 AZs Public subnets: NAT Gateways Private subnets: all compute & data 5 VPC Endpoints (S3, DynamoDB, Bedrock, SecretsManager, Logs) VPC Flow Logs → CloudWatch (90-day) HIPAA=true tags on all resources
Ingestion & ETL
S3 → Step Functions
S3 ingestion bucket (AES-256, versioned, Glacier 90d) raw/ normalized/ masked/ quarantine/ masking-audit/ prefixes Lambda: file_validator.py (S3 event trigger) Step Functions 12-state normalization pipeline Glue DataBrew (CSV / JSON / PDF) Textract (PDF text extraction) Macie PHI scan → Comprehend Medical entity detection Deterministic masking: [MASKED_{type}_{sha256[:8]}]
Databases
Graph + Vector + KV
Neptune db.r5.large (Gremlin, private subnets, 7-day backup) OpenSearch Serverless VECTORSEARCH (1024-dim HNSW) DynamoDB: recommendations table + reviews table 3 OpenSearch indices: procurement, architecture, market-intel Neptune: Application vertices + DEPENDS_ON edges
MCP Servers
ECS Fargate containers
mcp-graph: 4 Gremlin tools (profile, deps, blast radius, cycles) mcp-vector: 4 OpenSearch tools (search + chunk retrieval) ECR repositories per server Read-only IAM — explicit deny on writes All tool calls logged: agent_id, tool, params, latency_ms
AI Agent Swarm
Amazon Bedrock
Orchestrator: Claude Sonnet 4.5 (4096 tokens, 30s timeout) Telemetry Agent (Graph MCP) Dependency Agent (Graph MCP) Procurement Agent (Vector MCP) Provisioning Agent (Graph MCP) Synthesizer → DynamoDB (confidence + ROI + rationale)

Four phases from raw file upload to AI recommendation

1
Ingestion — S3 upload triggers validation
Data engineer uploads CSV, JSON, or PDF to raw/{date}/{dimension}/. S3 event fires Lambda validator, which checks file extension and dimension prefix. Valid files start Step Functions; invalid files move to quarantine/ and fire an SNS alert.
S3Lambda: file_validatorSNS alert on failure
2
Normalization — Step Functions ETL pipeline
12-state state machine detects file type, runs Glue DataBrew (CSV/JSON) or Textract + chunking (PDF), validates schema, and writes normalized output to normalized/{date}/{dimension}/. Invalid schema → quarantine with structured error.
Step FunctionsGlue DataBrewTextract512-token chunks, 50-token overlap
3
PHI Masking — Macie scan + Comprehend Medical + deterministic tokens
Macie scans normalized files for PHI/PII. Comprehend Medical detects entity types (NAME, ADDRESS, DATE, MRN, SSN). High-severity findings halt processing and move files to review-required/. Passed files get deterministic masking: [MASKED_NAME_a1b2c3d4] — same input always produces same token for referential consistency. Audit log written per file.
MacieComprehend MedicalSHA-256 deterministic tokensmasking-audit/ log
4
Database Loading — dimension-routed to graph or vector
Step Functions routes by data dimension: dependency data → Neptune bulk loader (Gremlin edges); procurement/architecture PDFs → Bedrock Titan embeddings → OpenSearch Serverless indexing; CMDB data goes to both. All traffic flows within the VPC via endpoints — no internet transit for database writes.
Neptune (dependencies)OpenSearch (embeddings)Titan Text v2 (1024-dim)VPC endpoints — no internet
5
AI Analysis — multi-agent swarm produces 6R recommendations
Orchestrator iterates the application backlog. Four specialist agents run in defined sequence/parallel: Telemetry (graph profile + dependencies), Dependency (blast radius + cycles), Procurement (contract search), Provisioning (CMDB cross-ref). Synthesizer produces per-application JSON with 6R path, confidence score, ROI projection, and missing intelligence list — written to DynamoDB and surfaced through API + dashboards.
Bedrock Orchestrator4 Specialist AgentsSynthesizerDynamoDB output

Five Bedrock agents — each with a specific data source and job

The multi-agent swarm is orchestrated by a Bedrock Orchestrator agent (Claude Sonnet 4.5) that delegates to four specialist action groups, each calling specific MCP server tools. Parallelism is baked into the execution plan: Telemetry and Procurement run concurrently; Dependency and Provisioning run sequentially after Telemetry.

Agent MCP Server Tools Called Execution Order
Orchestrator Delegates to all action groups, collects outputs for Synthesizer Drives the loop · Claude Sonnet 4.5 · 4096 tokens · 30s timeout
Telemetry Agent Graph MCP get_application_profile, get_dependencies Parallel with Procurement
Dependency Agent Graph MCP get_dependencies, get_blast_radius, detect_circular_dependencies Sequential — after Telemetry
Procurement Agent Vector MCP search_contracts, search_market_intel Parallel with Telemetry
Provisioning Agent Graph MCP get_application_profile (CMDB cross-ref) Sequential — after Dependency
Synthesizer Agent Aggregates all specialist outputs Final step → DynamoDB write
{
  "application_id": "app-001",
  "recommended_6r_path": "REPURCHASE",
  "confidence_score": 85,
  "data_quality_score": 25, // 0-100, proportional reduction if specialist fails
  "roi_projection": 105300,
  "roi_variance_percentage": 45,
  "rationale_text": "Vendor-managed SaaS is the industry standard...",
  "missing_intelligence_list": ["procurement_contracts", "operational_telemetry"]
}

Step-by-step rationalization workflow for enterprise architects

Five standalone HTML dashboards walk an enterprise architect through the rationalization workflow — from raw 6R output through data quality scoring, confidence tuning, financial modeling, and final human sign-off. All generated by Kiro from the spec.

Step 2
6R Strategic Allocation
VM distribution, 6R allocation bar chart, Risk vs. ROI bubble chart, Cloud Modernization Summary Matrix for all 10 apps.
Chart.js doughnutBubble chartSummary Matrix table
Step 3
Data Quality & Confidence Scoring
8-dimension data quality framework card grid, aggregate DQ Score, DQ vs. 6R Confidence scatter plot, updated matrix with scoring rationale.
8 DQ dimensionsScatter plotConfidence overlay
Step 4
Custom Weights & Gates Simulator
Executive hard-stop gates (decay threshold, blast radius penalty, BAA toggle), 8-slider DQ weight editor, live confidence matrix — all recalculated client-side with zero API calls.
Live recalculation8 slidersNo API required
Step 5
ROI Engine & Financial Methodology
$6,500/VM baseline TCO, 6R multipliers, ROI variance distribution floating bar chart (min-to-max savings), financial validation with confidence bounds and intelligence gap flags.
Variance barsConfidence boundsIntel gap flags
Step 6
Human-in-the-Loop Review
Portfolio sign-off donut, application rationalization queue sorted by R-Factor Confidence, per-app review cards with Approve / Override / Request Intel / Reject — persisted to DynamoDB via API Gateway.
HITL workflowOverride + recalc ROIDynamoDB persistence

Least-privilege IAM, VPC isolation, PHI masking — all generated

Kiro generated 8 distinct IAM roles with explicit allow-only policies — one per function type. The MCP server roles are read-only with explicit deny on write operations to Neptune and OpenSearch. The Lambda ETL role can write to Neptune and OpenSearch but cannot read DynamoDB. The API Lambda role can read/write DynamoDB but not OpenSearch.

RoleKey Permissions
lambda-api-roleDynamoDB CRUD (recommendations + reviews), Neptune read, S3 read
lambda-ingestion-roleS3 read/write (ingestion bucket), Step Functions start, SNS publish
lambda-etl-roleS3 read (masked/), Neptune write, OpenSearch write, Bedrock Titan invoke
mcp-graph-roleNeptune read-only + explicit deny on writes
mcp-vector-roleOpenSearch read-only + explicit deny on index/delete
bedrock-roleBedrock invoke model, ECS describe tasks for MCP
sfn-roleLambda invoke, Glue start job, Macie create job, Comprehend detect, S3 R/W
neptune-loader-roleS3 read (masked/ only), Neptune bulk load

Every file traverses the masking pipeline before it reaches any database. Amazon Macie classifies files for PHI/PII. Comprehend Medical detects entity types (NAME, ADDRESS, DATE, PHONE_OR_FAX, EMAIL, ID, AGE, PROTECTED_HEALTH_INFORMATION). High-severity findings halt the pipeline and move the file to review-required/ with an SNS alert.

Masking uses deterministic pseudonymization: [MASKED_{entity_type}_{sha256_first_8_chars}]. The same input value always produces the same masked token across all files — preserving referential integrity for joins and cross-file analysis. A per-file audit log records entity counts, job IDs, and timestamps in masking-audit/.

Every Lambda function, ECS Fargate container, Neptune instance, and OpenSearch collection runs in private subnets (10.0.3.0/24, 10.0.4.0/24) across 2 AZs. The only public-facing resources are NAT Gateways and CloudFront. API Gateway sits at the edge with its own resource policy.

Five VPC endpoints keep AWS service traffic inside the network: S3 (Gateway), DynamoDB (Gateway), Bedrock Runtime (Interface), Secrets Manager (Interface), CloudWatch Logs (Interface). No database or AI service call transits the public internet. All resources are tagged HIPAA=true for policy enforcement and compliance inventory.

Every Lambda and Step Functions execution emits structured JSON logs with correlation_id, component_name, operation, application_id, duration_ms, and status. MCP server tool call logs include requesting agent ID, tool name, parameters, response size, and latency. CloudWatch log groups have 30-day dev / 90-day prod retention.

Five CloudWatch alarms fire to SNS: Lambda errors (>5 in 5 min), Step Functions failures (>0 in 5 min), Neptune CPU (>80% for 5 min), API Gateway 5xx (>1% in 5 min), and a custom ingestion staleness alarm (no new S3 objects in 24 hours). VPC Flow Logs capture ALL traffic (ACCEPT + REJECT) with 90-day CloudWatch retention.


What AI-generated cloud deployments change

The traditional model for building a production AWS deployment at this scope — 9 CloudFormation modules, 8 Lambda functions, 2 containerized services, a multi-agent AI pipeline, 5 dashboards — is measured in weeks of infrastructure engineering. The AI-generated approach compresses that timeline and changes the nature of the work.

9
CloudFormation Modules
Networking, ingestion, ETL, masking, databases, compute, CDN, AI layer, security — all generated from a design spec with correct parameter passing, nested stack outputs, and environment-scoped naming.
0
Manual IaC Written
Not a line of CloudFormation YAML was hand-authored. The spec described the architecture; Kiro generated the implementation. Human effort was focused on reviewing and validating correctness — not on syntax.
8
Least-Privilege IAM Roles
Generated with explicit allow-only policies, read-only MCP roles, and per-function permission boundaries. Correct IAM is the hardest part of AWS security to get right manually — Kiro got it right from the spec.
HIPAA
Compliance Built In
VPC isolation, HIPAA=true tags on all resources, Macie + Comprehend Medical PHI pipeline, Secrets Manager via VPC endpoint, VPC Flow Logs, audit trails — generated as part of the deployment, not bolted on after.

The Spec IS the Product

When AI can generate production-grade deployments from a well-written spec, the most valuable skill shifts from writing infrastructure code to designing the architecture and specifying it precisely. This is what that looks like in practice.

AWS CloudFormation · Lambda · Neptune · OpenSearch Serverless · Bedrock · ECS Fargate · Step Functions · Python 3.11