| terraform { | |
| required_providers { | |
| aws = { | |
| source = "hashicorp/aws" | |
| version = "~> 5.0" | |
| } | |
| } | |
| } | |
| data "csvdecode" "master_plan" { | |
| file = "${path.module}/../tables/master_plan_v3.2.csv" | |
| } | |
| resource "aws_iam_role" "agent_roles" { | |
| for_each = { for idx, row in data.csvdecode.master_plan.records : | |
| row.Component => row if contains(["API Auth", "Cost Management"], row.Component) } | |
| name = "agentic-${lower(each.key)}-role" | |
| assume_role_policy = jsonencode({ | |
| Version = "2012-10-17", | |
| Statement = [{ | |
| Action = "sts:AssumeRole", | |
| Effect = "Allow", | |
| Principal = { | |
| Service = "lambda.amazonaws.com" | |
| } | |
| }] | |
| }) | |
| } | |
| resource "aws_appautoscaling_target" "agent_scale" { | |
| for_each = data.csvdecode.master_plan.records | |
| service_namespace = "lambda" | |
| scalable_dimension = "lambda:function:ProvisionedConcurrency" | |
| min_capacity = each.value.Automation_Level * 2 | |
| max_capacity = each.value.Automation_Level * 10 | |
| } | |