[{"data":1,"prerenderedAt":5865},["ShallowReactive",2],{"content-query-LEQ3GC8bUr":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"tags":10,"body":16,"_type":5859,"_id":5860,"_source":5861,"_file":5862,"_stem":5863,"_extension":5864},"/codes/opentofu-modules","codes",false,"","OpenTofu Modular Infrastructure","Reusable OpenTofu modules for spinning up production-ready AWS environments with VPC, ECS, RDS, and monitoring in minutes.",[11,12,13,14,15],"opentofu","aws","iac","devops","terraform",{"type":17,"children":18,"toc":5850},"root",[19,27,42,49,85,91,499,505,2566,2572,4843,4849,5620,5626,5680,5686,5691,5839,5844],{"type":20,"tag":21,"props":22,"children":24},"element","h1",{"id":23},"opentofu-modular-infrastructure",[25],{"type":26,"value":8},"text",{"type":20,"tag":28,"props":29,"children":30},"p",{},[31,33,40],{"type":26,"value":32},"After migrating from Terraform to OpenTofu (the open-source fork), I built a library of reusable modules that let me spin up entire environments — VPC, ECS cluster, databases, monitoring — in a single ",{"type":20,"tag":34,"props":35,"children":37},"code",{"className":36},[],[38],{"type":26,"value":39},"tofu apply",{"type":26,"value":41},".",{"type":20,"tag":43,"props":44,"children":46},"h2",{"id":45},"why-opentofu",[47],{"type":26,"value":48},"Why OpenTofu?",{"type":20,"tag":50,"props":51,"children":52},"ul",{},[53,65,75],{"type":20,"tag":54,"props":55,"children":56},"li",{},[57,63],{"type":20,"tag":58,"props":59,"children":60},"strong",{},[61],{"type":26,"value":62},"Truly open source",{"type":26,"value":64}," — BUSL license concerns with Terraform eliminated",{"type":20,"tag":54,"props":66,"children":67},{},[68,73],{"type":20,"tag":58,"props":69,"children":70},{},[71],{"type":26,"value":72},"Drop-in compatible",{"type":26,"value":74}," — Same HCL syntax, same providers, zero rewrite needed",{"type":20,"tag":54,"props":76,"children":77},{},[78,83],{"type":20,"tag":58,"props":79,"children":80},{},[81],{"type":26,"value":82},"Community-driven",{"type":26,"value":84}," — Backed by the Linux Foundation",{"type":20,"tag":43,"props":86,"children":88},{"id":87},"module-architecture",[89],{"type":26,"value":90},"Module Architecture",{"type":20,"tag":92,"props":93,"children":97},"pre",{"className":94,"code":95,"language":96,"meta":7,"style":7},"language-mermaid shiki shiki-themes material-theme-lighter github-light github-dark","graph TB\n    subgraph \"Root Module\"\n        ROOT[main.tf\u003Cbr/>Environment Configuration]\n    end\n\n    subgraph \"Network Layer\"\n        VPC[module/vpc\u003Cbr/>VPC + Subnets + NAT]\n    end\n\n    subgraph \"Compute Layer\"\n        ECS[module/ecs-cluster\u003Cbr/>Cluster + ALB]\n        SVC[module/ecs-service\u003Cbr/>Service + Autoscaling]\n        BATCH[module/batch\u003Cbr/>AWS Batch Jobs]\n    end\n\n    subgraph \"Data Layer\"\n        RDS[module/rds\u003Cbr/>MySQL/PostgreSQL]\n        DDB[module/dynamodb\u003Cbr/>DynamoDB Tables]\n    end\n\n    subgraph \"Security Layer\"\n        IAM[module/iam\u003Cbr/>Roles + Policies]\n        SEC[module/security\u003Cbr/>Config + Security Hub]\n    end\n\n    subgraph \"Monitoring\"\n        MON[module/monitoring\u003Cbr/>CloudWatch + Signoz]\n    end\n\n    ROOT --> VPC\n    ROOT --> ECS\n    ROOT --> RDS\n    ROOT --> IAM\n    ROOT --> SEC\n    ROOT --> MON\n    VPC --> ECS\n    VPC --> RDS\n    ECS --> SVC\n    ECS --> BATCH\n    IAM --> SVC\n    IAM --> BATCH\n\n    style ROOT fill:#4dabf7\n    style VPC fill:#51cf66\n    style ECS fill:#ffd43b\n","mermaid",[98],{"type":20,"tag":34,"props":99,"children":100},{"__ignoreMap":7},[101,113,122,131,140,150,159,168,176,184,193,202,211,220,228,236,245,254,263,271,279,288,297,306,314,322,331,340,348,356,365,374,383,392,401,410,419,428,437,446,455,464,472,481,490],{"type":20,"tag":102,"props":103,"children":106},"span",{"class":104,"line":105},"line",1,[107],{"type":20,"tag":102,"props":108,"children":110},{"style":109},"--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8",[111],{"type":26,"value":112},"graph TB\n",{"type":20,"tag":102,"props":114,"children":116},{"class":104,"line":115},2,[117],{"type":20,"tag":102,"props":118,"children":119},{"style":109},[120],{"type":26,"value":121},"    subgraph \"Root Module\"\n",{"type":20,"tag":102,"props":123,"children":125},{"class":104,"line":124},3,[126],{"type":20,"tag":102,"props":127,"children":128},{"style":109},[129],{"type":26,"value":130},"        ROOT[main.tf\u003Cbr/>Environment Configuration]\n",{"type":20,"tag":102,"props":132,"children":134},{"class":104,"line":133},4,[135],{"type":20,"tag":102,"props":136,"children":137},{"style":109},[138],{"type":26,"value":139},"    end\n",{"type":20,"tag":102,"props":141,"children":143},{"class":104,"line":142},5,[144],{"type":20,"tag":102,"props":145,"children":147},{"emptyLinePlaceholder":146},true,[148],{"type":26,"value":149},"\n",{"type":20,"tag":102,"props":151,"children":153},{"class":104,"line":152},6,[154],{"type":20,"tag":102,"props":155,"children":156},{"style":109},[157],{"type":26,"value":158},"    subgraph \"Network Layer\"\n",{"type":20,"tag":102,"props":160,"children":162},{"class":104,"line":161},7,[163],{"type":20,"tag":102,"props":164,"children":165},{"style":109},[166],{"type":26,"value":167},"        VPC[module/vpc\u003Cbr/>VPC + Subnets + NAT]\n",{"type":20,"tag":102,"props":169,"children":171},{"class":104,"line":170},8,[172],{"type":20,"tag":102,"props":173,"children":174},{"style":109},[175],{"type":26,"value":139},{"type":20,"tag":102,"props":177,"children":179},{"class":104,"line":178},9,[180],{"type":20,"tag":102,"props":181,"children":182},{"emptyLinePlaceholder":146},[183],{"type":26,"value":149},{"type":20,"tag":102,"props":185,"children":187},{"class":104,"line":186},10,[188],{"type":20,"tag":102,"props":189,"children":190},{"style":109},[191],{"type":26,"value":192},"    subgraph \"Compute Layer\"\n",{"type":20,"tag":102,"props":194,"children":196},{"class":104,"line":195},11,[197],{"type":20,"tag":102,"props":198,"children":199},{"style":109},[200],{"type":26,"value":201},"        ECS[module/ecs-cluster\u003Cbr/>Cluster + ALB]\n",{"type":20,"tag":102,"props":203,"children":205},{"class":104,"line":204},12,[206],{"type":20,"tag":102,"props":207,"children":208},{"style":109},[209],{"type":26,"value":210},"        SVC[module/ecs-service\u003Cbr/>Service + Autoscaling]\n",{"type":20,"tag":102,"props":212,"children":214},{"class":104,"line":213},13,[215],{"type":20,"tag":102,"props":216,"children":217},{"style":109},[218],{"type":26,"value":219},"        BATCH[module/batch\u003Cbr/>AWS Batch Jobs]\n",{"type":20,"tag":102,"props":221,"children":223},{"class":104,"line":222},14,[224],{"type":20,"tag":102,"props":225,"children":226},{"style":109},[227],{"type":26,"value":139},{"type":20,"tag":102,"props":229,"children":231},{"class":104,"line":230},15,[232],{"type":20,"tag":102,"props":233,"children":234},{"emptyLinePlaceholder":146},[235],{"type":26,"value":149},{"type":20,"tag":102,"props":237,"children":239},{"class":104,"line":238},16,[240],{"type":20,"tag":102,"props":241,"children":242},{"style":109},[243],{"type":26,"value":244},"    subgraph \"Data Layer\"\n",{"type":20,"tag":102,"props":246,"children":248},{"class":104,"line":247},17,[249],{"type":20,"tag":102,"props":250,"children":251},{"style":109},[252],{"type":26,"value":253},"        RDS[module/rds\u003Cbr/>MySQL/PostgreSQL]\n",{"type":20,"tag":102,"props":255,"children":257},{"class":104,"line":256},18,[258],{"type":20,"tag":102,"props":259,"children":260},{"style":109},[261],{"type":26,"value":262},"        DDB[module/dynamodb\u003Cbr/>DynamoDB Tables]\n",{"type":20,"tag":102,"props":264,"children":266},{"class":104,"line":265},19,[267],{"type":20,"tag":102,"props":268,"children":269},{"style":109},[270],{"type":26,"value":139},{"type":20,"tag":102,"props":272,"children":274},{"class":104,"line":273},20,[275],{"type":20,"tag":102,"props":276,"children":277},{"emptyLinePlaceholder":146},[278],{"type":26,"value":149},{"type":20,"tag":102,"props":280,"children":282},{"class":104,"line":281},21,[283],{"type":20,"tag":102,"props":284,"children":285},{"style":109},[286],{"type":26,"value":287},"    subgraph \"Security Layer\"\n",{"type":20,"tag":102,"props":289,"children":291},{"class":104,"line":290},22,[292],{"type":20,"tag":102,"props":293,"children":294},{"style":109},[295],{"type":26,"value":296},"        IAM[module/iam\u003Cbr/>Roles + Policies]\n",{"type":20,"tag":102,"props":298,"children":300},{"class":104,"line":299},23,[301],{"type":20,"tag":102,"props":302,"children":303},{"style":109},[304],{"type":26,"value":305},"        SEC[module/security\u003Cbr/>Config + Security Hub]\n",{"type":20,"tag":102,"props":307,"children":309},{"class":104,"line":308},24,[310],{"type":20,"tag":102,"props":311,"children":312},{"style":109},[313],{"type":26,"value":139},{"type":20,"tag":102,"props":315,"children":317},{"class":104,"line":316},25,[318],{"type":20,"tag":102,"props":319,"children":320},{"emptyLinePlaceholder":146},[321],{"type":26,"value":149},{"type":20,"tag":102,"props":323,"children":325},{"class":104,"line":324},26,[326],{"type":20,"tag":102,"props":327,"children":328},{"style":109},[329],{"type":26,"value":330},"    subgraph \"Monitoring\"\n",{"type":20,"tag":102,"props":332,"children":334},{"class":104,"line":333},27,[335],{"type":20,"tag":102,"props":336,"children":337},{"style":109},[338],{"type":26,"value":339},"        MON[module/monitoring\u003Cbr/>CloudWatch + Signoz]\n",{"type":20,"tag":102,"props":341,"children":343},{"class":104,"line":342},28,[344],{"type":20,"tag":102,"props":345,"children":346},{"style":109},[347],{"type":26,"value":139},{"type":20,"tag":102,"props":349,"children":351},{"class":104,"line":350},29,[352],{"type":20,"tag":102,"props":353,"children":354},{"emptyLinePlaceholder":146},[355],{"type":26,"value":149},{"type":20,"tag":102,"props":357,"children":359},{"class":104,"line":358},30,[360],{"type":20,"tag":102,"props":361,"children":362},{"style":109},[363],{"type":26,"value":364},"    ROOT --> VPC\n",{"type":20,"tag":102,"props":366,"children":368},{"class":104,"line":367},31,[369],{"type":20,"tag":102,"props":370,"children":371},{"style":109},[372],{"type":26,"value":373},"    ROOT --> ECS\n",{"type":20,"tag":102,"props":375,"children":377},{"class":104,"line":376},32,[378],{"type":20,"tag":102,"props":379,"children":380},{"style":109},[381],{"type":26,"value":382},"    ROOT --> RDS\n",{"type":20,"tag":102,"props":384,"children":386},{"class":104,"line":385},33,[387],{"type":20,"tag":102,"props":388,"children":389},{"style":109},[390],{"type":26,"value":391},"    ROOT --> IAM\n",{"type":20,"tag":102,"props":393,"children":395},{"class":104,"line":394},34,[396],{"type":20,"tag":102,"props":397,"children":398},{"style":109},[399],{"type":26,"value":400},"    ROOT --> SEC\n",{"type":20,"tag":102,"props":402,"children":404},{"class":104,"line":403},35,[405],{"type":20,"tag":102,"props":406,"children":407},{"style":109},[408],{"type":26,"value":409},"    ROOT --> MON\n",{"type":20,"tag":102,"props":411,"children":413},{"class":104,"line":412},36,[414],{"type":20,"tag":102,"props":415,"children":416},{"style":109},[417],{"type":26,"value":418},"    VPC --> ECS\n",{"type":20,"tag":102,"props":420,"children":422},{"class":104,"line":421},37,[423],{"type":20,"tag":102,"props":424,"children":425},{"style":109},[426],{"type":26,"value":427},"    VPC --> RDS\n",{"type":20,"tag":102,"props":429,"children":431},{"class":104,"line":430},38,[432],{"type":20,"tag":102,"props":433,"children":434},{"style":109},[435],{"type":26,"value":436},"    ECS --> SVC\n",{"type":20,"tag":102,"props":438,"children":440},{"class":104,"line":439},39,[441],{"type":20,"tag":102,"props":442,"children":443},{"style":109},[444],{"type":26,"value":445},"    ECS --> BATCH\n",{"type":20,"tag":102,"props":447,"children":449},{"class":104,"line":448},40,[450],{"type":20,"tag":102,"props":451,"children":452},{"style":109},[453],{"type":26,"value":454},"    IAM --> SVC\n",{"type":20,"tag":102,"props":456,"children":458},{"class":104,"line":457},41,[459],{"type":20,"tag":102,"props":460,"children":461},{"style":109},[462],{"type":26,"value":463},"    IAM --> BATCH\n",{"type":20,"tag":102,"props":465,"children":467},{"class":104,"line":466},42,[468],{"type":20,"tag":102,"props":469,"children":470},{"emptyLinePlaceholder":146},[471],{"type":26,"value":149},{"type":20,"tag":102,"props":473,"children":475},{"class":104,"line":474},43,[476],{"type":20,"tag":102,"props":477,"children":478},{"style":109},[479],{"type":26,"value":480},"    style ROOT fill:#4dabf7\n",{"type":20,"tag":102,"props":482,"children":484},{"class":104,"line":483},44,[485],{"type":20,"tag":102,"props":486,"children":487},{"style":109},[488],{"type":26,"value":489},"    style VPC fill:#51cf66\n",{"type":20,"tag":102,"props":491,"children":493},{"class":104,"line":492},45,[494],{"type":20,"tag":102,"props":495,"children":496},{"style":109},[497],{"type":26,"value":498},"    style ECS fill:#ffd43b\n",{"type":20,"tag":43,"props":500,"children":502},{"id":501},"vpc-module",[503],{"type":26,"value":504},"VPC Module",{"type":20,"tag":92,"props":506,"children":510},{"className":507,"code":508,"language":509,"meta":7,"style":7},"language-hcl shiki shiki-themes material-theme-lighter github-light github-dark","# modules/vpc/main.tf\nvariable \"environment\" {\n  type = string\n}\n\nvariable \"vpc_cidr\" {\n  type    = string\n  default = \"10.0.0.0/16\"\n}\n\nvariable \"availability_zones\" {\n  type    = list(string)\n  default = [\"ap-southeast-1a\", \"ap-southeast-1b\", \"ap-southeast-1c\"]\n}\n\nlocals {\n  public_subnets  = [for i, az in var.availability_zones : cidrsubnet(var.vpc_cidr, 8, i)]\n  private_subnets = [for i, az in var.availability_zones : cidrsubnet(var.vpc_cidr, 8, i + 10)]\n}\n\nresource \"aws_vpc\" \"main\" {\n  cidr_block           = var.vpc_cidr\n  enable_dns_hostnames = true\n  enable_dns_support   = true\n\n  tags = {\n    Name        = \"${var.environment}-vpc\"\n    Environment = var.environment\n    ManagedBy   = \"opentofu\"\n  }\n}\n\nresource \"aws_subnet\" \"public\" {\n  count             = length(var.availability_zones)\n  vpc_id            = aws_vpc.main.id\n  cidr_block        = local.public_subnets[count.index]\n  availability_zone = var.availability_zones[count.index]\n\n  map_public_ip_on_launch = true\n\n  tags = {\n    Name        = \"${var.environment}-public-${var.availability_zones[count.index]}\"\n    Environment = var.environment\n    Tier        = \"public\"\n  }\n}\n\nresource \"aws_subnet\" \"private\" {\n  count             = length(var.availability_zones)\n  vpc_id            = aws_vpc.main.id\n  cidr_block        = local.private_subnets[count.index]\n  availability_zone = var.availability_zones[count.index]\n\n  tags = {\n    Name        = \"${var.environment}-private-${var.availability_zones[count.index]}\"\n    Environment = var.environment\n    Tier        = \"private\"\n  }\n}\n\n# NAT Gateway (single for cost savings, multi-AZ for production)\nresource \"aws_eip\" \"nat\" {\n  count  = var.environment == \"production\" ? length(var.availability_zones) : 1\n  domain = \"vpc\"\n}\n\nresource \"aws_nat_gateway\" \"main\" {\n  count         = var.environment == \"production\" ? length(var.availability_zones) : 1\n  allocation_id = aws_eip.nat[count.index].id\n  subnet_id     = aws_subnet.public[count.index].id\n}\n\noutput \"vpc_id\" {\n  value = aws_vpc.main.id\n}\n\noutput \"private_subnet_ids\" {\n  value = aws_subnet.private[*].id\n}\n\noutput \"public_subnet_ids\" {\n  value = aws_subnet.public[*].id\n}\n","hcl",[511],{"type":20,"tag":34,"props":512,"children":513},{"__ignoreMap":7},[514,523,544,564,572,579,595,611,640,647,654,670,701,771,778,785,797,906,1009,1016,1023,1045,1071,1089,1106,1113,1129,1179,1196,1220,1228,1235,1242,1263,1301,1337,1385,1429,1436,1452,1459,1474,1559,1574,1599,1606,1614,1622,1643,1679,1711,1756,1800,1808,1824,1909,1925,1950,1958,1966,1974,1983,2005,2086,2112,2120,2128,2149,2226,2281,2336,2344,2352,2370,2403,2411,2419,2436,2481,2489,2497,2514,2558],{"type":20,"tag":102,"props":515,"children":516},{"class":104,"line":105},[517],{"type":20,"tag":102,"props":518,"children":520},{"style":519},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit",[521],{"type":26,"value":522},"# modules/vpc/main.tf\n",{"type":20,"tag":102,"props":524,"children":525},{"class":104,"line":115},[526,532,538],{"type":20,"tag":102,"props":527,"children":529},{"style":528},"--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0",[530],{"type":26,"value":531},"variable",{"type":20,"tag":102,"props":533,"children":535},{"style":534},"--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF",[536],{"type":26,"value":537}," \"environment\"",{"type":20,"tag":102,"props":539,"children":541},{"style":540},"--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8",[542],{"type":26,"value":543}," {\n",{"type":20,"tag":102,"props":545,"children":546},{"class":104,"line":124},[547,552,558],{"type":20,"tag":102,"props":548,"children":549},{"style":109},[550],{"type":26,"value":551},"  type",{"type":20,"tag":102,"props":553,"children":555},{"style":554},"--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583",[556],{"type":26,"value":557}," =",{"type":20,"tag":102,"props":559,"children":561},{"style":560},"--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583",[562],{"type":26,"value":563}," string\n",{"type":20,"tag":102,"props":565,"children":566},{"class":104,"line":133},[567],{"type":20,"tag":102,"props":568,"children":569},{"style":540},[570],{"type":26,"value":571},"}\n",{"type":20,"tag":102,"props":573,"children":574},{"class":104,"line":142},[575],{"type":20,"tag":102,"props":576,"children":577},{"emptyLinePlaceholder":146},[578],{"type":26,"value":149},{"type":20,"tag":102,"props":580,"children":581},{"class":104,"line":152},[582,586,591],{"type":20,"tag":102,"props":583,"children":584},{"style":528},[585],{"type":26,"value":531},{"type":20,"tag":102,"props":587,"children":588},{"style":534},[589],{"type":26,"value":590}," \"vpc_cidr\"",{"type":20,"tag":102,"props":592,"children":593},{"style":540},[594],{"type":26,"value":543},{"type":20,"tag":102,"props":596,"children":597},{"class":104,"line":161},[598,602,607],{"type":20,"tag":102,"props":599,"children":600},{"style":109},[601],{"type":26,"value":551},{"type":20,"tag":102,"props":603,"children":604},{"style":554},[605],{"type":26,"value":606},"    =",{"type":20,"tag":102,"props":608,"children":609},{"style":560},[610],{"type":26,"value":563},{"type":20,"tag":102,"props":612,"children":613},{"class":104,"line":170},[614,619,623,629,635],{"type":20,"tag":102,"props":615,"children":616},{"style":109},[617],{"type":26,"value":618},"  default",{"type":20,"tag":102,"props":620,"children":621},{"style":554},[622],{"type":26,"value":557},{"type":20,"tag":102,"props":624,"children":626},{"style":625},"--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF",[627],{"type":26,"value":628}," \"",{"type":20,"tag":102,"props":630,"children":632},{"style":631},"--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF",[633],{"type":26,"value":634},"10.0.0.0/16",{"type":20,"tag":102,"props":636,"children":637},{"style":625},[638],{"type":26,"value":639},"\"\n",{"type":20,"tag":102,"props":641,"children":642},{"class":104,"line":178},[643],{"type":20,"tag":102,"props":644,"children":645},{"style":540},[646],{"type":26,"value":571},{"type":20,"tag":102,"props":648,"children":649},{"class":104,"line":186},[650],{"type":20,"tag":102,"props":651,"children":652},{"emptyLinePlaceholder":146},[653],{"type":26,"value":149},{"type":20,"tag":102,"props":655,"children":656},{"class":104,"line":195},[657,661,666],{"type":20,"tag":102,"props":658,"children":659},{"style":528},[660],{"type":26,"value":531},{"type":20,"tag":102,"props":662,"children":663},{"style":534},[664],{"type":26,"value":665}," \"availability_zones\"",{"type":20,"tag":102,"props":667,"children":668},{"style":540},[669],{"type":26,"value":543},{"type":20,"tag":102,"props":671,"children":672},{"class":104,"line":204},[673,677,681,686,691,696],{"type":20,"tag":102,"props":674,"children":675},{"style":109},[676],{"type":26,"value":551},{"type":20,"tag":102,"props":678,"children":679},{"style":554},[680],{"type":26,"value":606},{"type":20,"tag":102,"props":682,"children":683},{"style":560},[684],{"type":26,"value":685}," list",{"type":20,"tag":102,"props":687,"children":688},{"style":540},[689],{"type":26,"value":690},"(",{"type":20,"tag":102,"props":692,"children":693},{"style":560},[694],{"type":26,"value":695},"string",{"type":20,"tag":102,"props":697,"children":698},{"style":540},[699],{"type":26,"value":700},")\n",{"type":20,"tag":102,"props":702,"children":703},{"class":104,"line":213},[704,708,712,717,722,727,731,736,740,745,749,753,757,762,766],{"type":20,"tag":102,"props":705,"children":706},{"style":109},[707],{"type":26,"value":618},{"type":20,"tag":102,"props":709,"children":710},{"style":554},[711],{"type":26,"value":557},{"type":20,"tag":102,"props":713,"children":714},{"style":540},[715],{"type":26,"value":716}," [",{"type":20,"tag":102,"props":718,"children":719},{"style":625},[720],{"type":26,"value":721},"\"",{"type":20,"tag":102,"props":723,"children":724},{"style":631},[725],{"type":26,"value":726},"ap-southeast-1a",{"type":20,"tag":102,"props":728,"children":729},{"style":625},[730],{"type":26,"value":721},{"type":20,"tag":102,"props":732,"children":733},{"style":540},[734],{"type":26,"value":735},",",{"type":20,"tag":102,"props":737,"children":738},{"style":625},[739],{"type":26,"value":628},{"type":20,"tag":102,"props":741,"children":742},{"style":631},[743],{"type":26,"value":744},"ap-southeast-1b",{"type":20,"tag":102,"props":746,"children":747},{"style":625},[748],{"type":26,"value":721},{"type":20,"tag":102,"props":750,"children":751},{"style":540},[752],{"type":26,"value":735},{"type":20,"tag":102,"props":754,"children":755},{"style":625},[756],{"type":26,"value":628},{"type":20,"tag":102,"props":758,"children":759},{"style":631},[760],{"type":26,"value":761},"ap-southeast-1c",{"type":20,"tag":102,"props":763,"children":764},{"style":625},[765],{"type":26,"value":721},{"type":20,"tag":102,"props":767,"children":768},{"style":540},[769],{"type":26,"value":770},"]\n",{"type":20,"tag":102,"props":772,"children":773},{"class":104,"line":222},[774],{"type":20,"tag":102,"props":775,"children":776},{"style":540},[777],{"type":26,"value":571},{"type":20,"tag":102,"props":779,"children":780},{"class":104,"line":230},[781],{"type":20,"tag":102,"props":782,"children":783},{"emptyLinePlaceholder":146},[784],{"type":26,"value":149},{"type":20,"tag":102,"props":786,"children":787},{"class":104,"line":238},[788,793],{"type":20,"tag":102,"props":789,"children":790},{"style":528},[791],{"type":26,"value":792},"locals",{"type":20,"tag":102,"props":794,"children":795},{"style":540},[796],{"type":26,"value":543},{"type":20,"tag":102,"props":798,"children":799},{"class":104,"line":247},[800,805,810,814,820,825,829,834,839,844,848,853,858,864,868,874,878,883,887,893,897,901],{"type":20,"tag":102,"props":801,"children":802},{"style":109},[803],{"type":26,"value":804},"  public_subnets",{"type":20,"tag":102,"props":806,"children":807},{"style":554},[808],{"type":26,"value":809},"  =",{"type":20,"tag":102,"props":811,"children":812},{"style":540},[813],{"type":26,"value":716},{"type":20,"tag":102,"props":815,"children":817},{"style":816},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit",[818],{"type":26,"value":819},"for",{"type":20,"tag":102,"props":821,"children":822},{"style":109},[823],{"type":26,"value":824}," i",{"type":20,"tag":102,"props":826,"children":827},{"style":540},[828],{"type":26,"value":735},{"type":20,"tag":102,"props":830,"children":831},{"style":109},[832],{"type":26,"value":833}," az",{"type":20,"tag":102,"props":835,"children":836},{"style":554},[837],{"type":26,"value":838}," in",{"type":20,"tag":102,"props":840,"children":841},{"style":109},[842],{"type":26,"value":843}," var",{"type":20,"tag":102,"props":845,"children":846},{"style":554},[847],{"type":26,"value":41},{"type":20,"tag":102,"props":849,"children":850},{"style":109},[851],{"type":26,"value":852},"availability_zones",{"type":20,"tag":102,"props":854,"children":855},{"style":554},[856],{"type":26,"value":857}," :",{"type":20,"tag":102,"props":859,"children":861},{"style":860},"--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF",[862],{"type":26,"value":863}," cidrsubnet",{"type":20,"tag":102,"props":865,"children":866},{"style":540},[867],{"type":26,"value":690},{"type":20,"tag":102,"props":869,"children":871},{"style":870},"--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8",[872],{"type":26,"value":873},"var",{"type":20,"tag":102,"props":875,"children":876},{"style":554},[877],{"type":26,"value":41},{"type":20,"tag":102,"props":879,"children":880},{"style":109},[881],{"type":26,"value":882},"vpc_cidr",{"type":20,"tag":102,"props":884,"children":885},{"style":540},[886],{"type":26,"value":735},{"type":20,"tag":102,"props":888,"children":890},{"style":889},"--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF",[891],{"type":26,"value":892}," 8",{"type":20,"tag":102,"props":894,"children":895},{"style":540},[896],{"type":26,"value":735},{"type":20,"tag":102,"props":898,"children":899},{"style":870},[900],{"type":26,"value":824},{"type":20,"tag":102,"props":902,"children":903},{"style":540},[904],{"type":26,"value":905},")]\n",{"type":20,"tag":102,"props":907,"children":908},{"class":104,"line":256},[909,914,918,922,926,930,934,938,942,946,950,954,958,962,966,970,974,978,982,986,990,995,1000,1005],{"type":20,"tag":102,"props":910,"children":911},{"style":109},[912],{"type":26,"value":913},"  private_subnets",{"type":20,"tag":102,"props":915,"children":916},{"style":554},[917],{"type":26,"value":557},{"type":20,"tag":102,"props":919,"children":920},{"style":540},[921],{"type":26,"value":716},{"type":20,"tag":102,"props":923,"children":924},{"style":816},[925],{"type":26,"value":819},{"type":20,"tag":102,"props":927,"children":928},{"style":109},[929],{"type":26,"value":824},{"type":20,"tag":102,"props":931,"children":932},{"style":540},[933],{"type":26,"value":735},{"type":20,"tag":102,"props":935,"children":936},{"style":109},[937],{"type":26,"value":833},{"type":20,"tag":102,"props":939,"children":940},{"style":554},[941],{"type":26,"value":838},{"type":20,"tag":102,"props":943,"children":944},{"style":109},[945],{"type":26,"value":843},{"type":20,"tag":102,"props":947,"children":948},{"style":554},[949],{"type":26,"value":41},{"type":20,"tag":102,"props":951,"children":952},{"style":109},[953],{"type":26,"value":852},{"type":20,"tag":102,"props":955,"children":956},{"style":554},[957],{"type":26,"value":857},{"type":20,"tag":102,"props":959,"children":960},{"style":860},[961],{"type":26,"value":863},{"type":20,"tag":102,"props":963,"children":964},{"style":540},[965],{"type":26,"value":690},{"type":20,"tag":102,"props":967,"children":968},{"style":870},[969],{"type":26,"value":873},{"type":20,"tag":102,"props":971,"children":972},{"style":554},[973],{"type":26,"value":41},{"type":20,"tag":102,"props":975,"children":976},{"style":109},[977],{"type":26,"value":882},{"type":20,"tag":102,"props":979,"children":980},{"style":540},[981],{"type":26,"value":735},{"type":20,"tag":102,"props":983,"children":984},{"style":889},[985],{"type":26,"value":892},{"type":20,"tag":102,"props":987,"children":988},{"style":540},[989],{"type":26,"value":735},{"type":20,"tag":102,"props":991,"children":992},{"style":870},[993],{"type":26,"value":994}," i ",{"type":20,"tag":102,"props":996,"children":997},{"style":554},[998],{"type":26,"value":999},"+",{"type":20,"tag":102,"props":1001,"children":1002},{"style":889},[1003],{"type":26,"value":1004}," 10",{"type":20,"tag":102,"props":1006,"children":1007},{"style":540},[1008],{"type":26,"value":905},{"type":20,"tag":102,"props":1010,"children":1011},{"class":104,"line":265},[1012],{"type":20,"tag":102,"props":1013,"children":1014},{"style":540},[1015],{"type":26,"value":571},{"type":20,"tag":102,"props":1017,"children":1018},{"class":104,"line":273},[1019],{"type":20,"tag":102,"props":1020,"children":1021},{"emptyLinePlaceholder":146},[1022],{"type":26,"value":149},{"type":20,"tag":102,"props":1024,"children":1025},{"class":104,"line":281},[1026,1031,1036,1041],{"type":20,"tag":102,"props":1027,"children":1028},{"style":528},[1029],{"type":26,"value":1030},"resource",{"type":20,"tag":102,"props":1032,"children":1033},{"style":534},[1034],{"type":26,"value":1035}," \"aws_vpc\"",{"type":20,"tag":102,"props":1037,"children":1038},{"style":534},[1039],{"type":26,"value":1040}," \"main\"",{"type":20,"tag":102,"props":1042,"children":1043},{"style":540},[1044],{"type":26,"value":543},{"type":20,"tag":102,"props":1046,"children":1047},{"class":104,"line":290},[1048,1053,1058,1062,1066],{"type":20,"tag":102,"props":1049,"children":1050},{"style":109},[1051],{"type":26,"value":1052},"  cidr_block",{"type":20,"tag":102,"props":1054,"children":1055},{"style":554},[1056],{"type":26,"value":1057},"           =",{"type":20,"tag":102,"props":1059,"children":1060},{"style":870},[1061],{"type":26,"value":843},{"type":20,"tag":102,"props":1063,"children":1064},{"style":554},[1065],{"type":26,"value":41},{"type":20,"tag":102,"props":1067,"children":1068},{"style":109},[1069],{"type":26,"value":1070},"vpc_cidr\n",{"type":20,"tag":102,"props":1072,"children":1073},{"class":104,"line":299},[1074,1079,1083],{"type":20,"tag":102,"props":1075,"children":1076},{"style":109},[1077],{"type":26,"value":1078},"  enable_dns_hostnames",{"type":20,"tag":102,"props":1080,"children":1081},{"style":554},[1082],{"type":26,"value":557},{"type":20,"tag":102,"props":1084,"children":1086},{"style":1085},"--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF",[1087],{"type":26,"value":1088}," true\n",{"type":20,"tag":102,"props":1090,"children":1091},{"class":104,"line":308},[1092,1097,1102],{"type":20,"tag":102,"props":1093,"children":1094},{"style":109},[1095],{"type":26,"value":1096},"  enable_dns_support",{"type":20,"tag":102,"props":1098,"children":1099},{"style":554},[1100],{"type":26,"value":1101},"   =",{"type":20,"tag":102,"props":1103,"children":1104},{"style":1085},[1105],{"type":26,"value":1088},{"type":20,"tag":102,"props":1107,"children":1108},{"class":104,"line":316},[1109],{"type":20,"tag":102,"props":1110,"children":1111},{"emptyLinePlaceholder":146},[1112],{"type":26,"value":149},{"type":20,"tag":102,"props":1114,"children":1115},{"class":104,"line":324},[1116,1121,1125],{"type":20,"tag":102,"props":1117,"children":1118},{"style":109},[1119],{"type":26,"value":1120},"  tags",{"type":20,"tag":102,"props":1122,"children":1123},{"style":554},[1124],{"type":26,"value":557},{"type":20,"tag":102,"props":1126,"children":1127},{"style":540},[1128],{"type":26,"value":543},{"type":20,"tag":102,"props":1130,"children":1131},{"class":104,"line":333},[1132,1137,1142,1146,1152,1156,1160,1165,1170,1175],{"type":20,"tag":102,"props":1133,"children":1134},{"style":109},[1135],{"type":26,"value":1136},"    Name",{"type":20,"tag":102,"props":1138,"children":1139},{"style":554},[1140],{"type":26,"value":1141},"        =",{"type":20,"tag":102,"props":1143,"children":1144},{"style":625},[1145],{"type":26,"value":628},{"type":20,"tag":102,"props":1147,"children":1149},{"style":1148},"--shiki-light:#F76D47;--shiki-default:#D73A49;--shiki-dark:#F97583",[1150],{"type":26,"value":1151},"${",{"type":20,"tag":102,"props":1153,"children":1154},{"style":109},[1155],{"type":26,"value":873},{"type":20,"tag":102,"props":1157,"children":1158},{"style":554},[1159],{"type":26,"value":41},{"type":20,"tag":102,"props":1161,"children":1162},{"style":109},[1163],{"type":26,"value":1164},"environment",{"type":20,"tag":102,"props":1166,"children":1167},{"style":1148},[1168],{"type":26,"value":1169},"}",{"type":20,"tag":102,"props":1171,"children":1172},{"style":631},[1173],{"type":26,"value":1174},"-vpc",{"type":20,"tag":102,"props":1176,"children":1177},{"style":625},[1178],{"type":26,"value":639},{"type":20,"tag":102,"props":1180,"children":1181},{"class":104,"line":342},[1182,1187,1191],{"type":20,"tag":102,"props":1183,"children":1184},{"style":109},[1185],{"type":26,"value":1186},"    Environment",{"type":20,"tag":102,"props":1188,"children":1189},{"style":554},[1190],{"type":26,"value":557},{"type":20,"tag":102,"props":1192,"children":1193},{"style":870},[1194],{"type":26,"value":1195}," var.environment\n",{"type":20,"tag":102,"props":1197,"children":1198},{"class":104,"line":350},[1199,1204,1208,1212,1216],{"type":20,"tag":102,"props":1200,"children":1201},{"style":109},[1202],{"type":26,"value":1203},"    ManagedBy",{"type":20,"tag":102,"props":1205,"children":1206},{"style":554},[1207],{"type":26,"value":1101},{"type":20,"tag":102,"props":1209,"children":1210},{"style":625},[1211],{"type":26,"value":628},{"type":20,"tag":102,"props":1213,"children":1214},{"style":631},[1215],{"type":26,"value":11},{"type":20,"tag":102,"props":1217,"children":1218},{"style":625},[1219],{"type":26,"value":639},{"type":20,"tag":102,"props":1221,"children":1222},{"class":104,"line":358},[1223],{"type":20,"tag":102,"props":1224,"children":1225},{"style":540},[1226],{"type":26,"value":1227},"  }\n",{"type":20,"tag":102,"props":1229,"children":1230},{"class":104,"line":367},[1231],{"type":20,"tag":102,"props":1232,"children":1233},{"style":540},[1234],{"type":26,"value":571},{"type":20,"tag":102,"props":1236,"children":1237},{"class":104,"line":376},[1238],{"type":20,"tag":102,"props":1239,"children":1240},{"emptyLinePlaceholder":146},[1241],{"type":26,"value":149},{"type":20,"tag":102,"props":1243,"children":1244},{"class":104,"line":385},[1245,1249,1254,1259],{"type":20,"tag":102,"props":1246,"children":1247},{"style":528},[1248],{"type":26,"value":1030},{"type":20,"tag":102,"props":1250,"children":1251},{"style":534},[1252],{"type":26,"value":1253}," \"aws_subnet\"",{"type":20,"tag":102,"props":1255,"children":1256},{"style":534},[1257],{"type":26,"value":1258}," \"public\"",{"type":20,"tag":102,"props":1260,"children":1261},{"style":540},[1262],{"type":26,"value":543},{"type":20,"tag":102,"props":1264,"children":1265},{"class":104,"line":394},[1266,1271,1276,1281,1285,1289,1293,1297],{"type":20,"tag":102,"props":1267,"children":1268},{"style":109},[1269],{"type":26,"value":1270},"  count",{"type":20,"tag":102,"props":1272,"children":1273},{"style":554},[1274],{"type":26,"value":1275},"             =",{"type":20,"tag":102,"props":1277,"children":1278},{"style":860},[1279],{"type":26,"value":1280}," length",{"type":20,"tag":102,"props":1282,"children":1283},{"style":540},[1284],{"type":26,"value":690},{"type":20,"tag":102,"props":1286,"children":1287},{"style":870},[1288],{"type":26,"value":873},{"type":20,"tag":102,"props":1290,"children":1291},{"style":554},[1292],{"type":26,"value":41},{"type":20,"tag":102,"props":1294,"children":1295},{"style":109},[1296],{"type":26,"value":852},{"type":20,"tag":102,"props":1298,"children":1299},{"style":540},[1300],{"type":26,"value":700},{"type":20,"tag":102,"props":1302,"children":1303},{"class":104,"line":403},[1304,1309,1314,1319,1323,1328,1332],{"type":20,"tag":102,"props":1305,"children":1306},{"style":109},[1307],{"type":26,"value":1308},"  vpc_id",{"type":20,"tag":102,"props":1310,"children":1311},{"style":554},[1312],{"type":26,"value":1313},"            =",{"type":20,"tag":102,"props":1315,"children":1316},{"style":870},[1317],{"type":26,"value":1318}," aws_vpc",{"type":20,"tag":102,"props":1320,"children":1321},{"style":554},[1322],{"type":26,"value":41},{"type":20,"tag":102,"props":1324,"children":1325},{"style":109},[1326],{"type":26,"value":1327},"main",{"type":20,"tag":102,"props":1329,"children":1330},{"style":554},[1331],{"type":26,"value":41},{"type":20,"tag":102,"props":1333,"children":1334},{"style":109},[1335],{"type":26,"value":1336},"id\n",{"type":20,"tag":102,"props":1338,"children":1339},{"class":104,"line":412},[1340,1344,1348,1353,1357,1362,1367,1372,1376,1381],{"type":20,"tag":102,"props":1341,"children":1342},{"style":109},[1343],{"type":26,"value":1052},{"type":20,"tag":102,"props":1345,"children":1346},{"style":554},[1347],{"type":26,"value":1141},{"type":20,"tag":102,"props":1349,"children":1350},{"style":870},[1351],{"type":26,"value":1352}," local",{"type":20,"tag":102,"props":1354,"children":1355},{"style":554},[1356],{"type":26,"value":41},{"type":20,"tag":102,"props":1358,"children":1359},{"style":109},[1360],{"type":26,"value":1361},"public_subnets",{"type":20,"tag":102,"props":1363,"children":1364},{"style":540},[1365],{"type":26,"value":1366},"[",{"type":20,"tag":102,"props":1368,"children":1369},{"style":109},[1370],{"type":26,"value":1371},"count",{"type":20,"tag":102,"props":1373,"children":1374},{"style":554},[1375],{"type":26,"value":41},{"type":20,"tag":102,"props":1377,"children":1378},{"style":109},[1379],{"type":26,"value":1380},"index",{"type":20,"tag":102,"props":1382,"children":1383},{"style":540},[1384],{"type":26,"value":770},{"type":20,"tag":102,"props":1386,"children":1387},{"class":104,"line":421},[1388,1393,1397,1401,1405,1409,1413,1417,1421,1425],{"type":20,"tag":102,"props":1389,"children":1390},{"style":109},[1391],{"type":26,"value":1392},"  availability_zone",{"type":20,"tag":102,"props":1394,"children":1395},{"style":554},[1396],{"type":26,"value":557},{"type":20,"tag":102,"props":1398,"children":1399},{"style":870},[1400],{"type":26,"value":843},{"type":20,"tag":102,"props":1402,"children":1403},{"style":554},[1404],{"type":26,"value":41},{"type":20,"tag":102,"props":1406,"children":1407},{"style":109},[1408],{"type":26,"value":852},{"type":20,"tag":102,"props":1410,"children":1411},{"style":540},[1412],{"type":26,"value":1366},{"type":20,"tag":102,"props":1414,"children":1415},{"style":109},[1416],{"type":26,"value":1371},{"type":20,"tag":102,"props":1418,"children":1419},{"style":554},[1420],{"type":26,"value":41},{"type":20,"tag":102,"props":1422,"children":1423},{"style":109},[1424],{"type":26,"value":1380},{"type":20,"tag":102,"props":1426,"children":1427},{"style":540},[1428],{"type":26,"value":770},{"type":20,"tag":102,"props":1430,"children":1431},{"class":104,"line":430},[1432],{"type":20,"tag":102,"props":1433,"children":1434},{"emptyLinePlaceholder":146},[1435],{"type":26,"value":149},{"type":20,"tag":102,"props":1437,"children":1438},{"class":104,"line":439},[1439,1444,1448],{"type":20,"tag":102,"props":1440,"children":1441},{"style":109},[1442],{"type":26,"value":1443},"  map_public_ip_on_launch",{"type":20,"tag":102,"props":1445,"children":1446},{"style":554},[1447],{"type":26,"value":557},{"type":20,"tag":102,"props":1449,"children":1450},{"style":1085},[1451],{"type":26,"value":1088},{"type":20,"tag":102,"props":1453,"children":1454},{"class":104,"line":448},[1455],{"type":20,"tag":102,"props":1456,"children":1457},{"emptyLinePlaceholder":146},[1458],{"type":26,"value":149},{"type":20,"tag":102,"props":1460,"children":1461},{"class":104,"line":457},[1462,1466,1470],{"type":20,"tag":102,"props":1463,"children":1464},{"style":109},[1465],{"type":26,"value":1120},{"type":20,"tag":102,"props":1467,"children":1468},{"style":554},[1469],{"type":26,"value":557},{"type":20,"tag":102,"props":1471,"children":1472},{"style":540},[1473],{"type":26,"value":543},{"type":20,"tag":102,"props":1475,"children":1476},{"class":104,"line":466},[1477,1481,1485,1489,1493,1497,1501,1505,1509,1514,1518,1522,1526,1530,1534,1538,1542,1546,1551,1555],{"type":20,"tag":102,"props":1478,"children":1479},{"style":109},[1480],{"type":26,"value":1136},{"type":20,"tag":102,"props":1482,"children":1483},{"style":554},[1484],{"type":26,"value":1141},{"type":20,"tag":102,"props":1486,"children":1487},{"style":625},[1488],{"type":26,"value":628},{"type":20,"tag":102,"props":1490,"children":1491},{"style":1148},[1492],{"type":26,"value":1151},{"type":20,"tag":102,"props":1494,"children":1495},{"style":109},[1496],{"type":26,"value":873},{"type":20,"tag":102,"props":1498,"children":1499},{"style":554},[1500],{"type":26,"value":41},{"type":20,"tag":102,"props":1502,"children":1503},{"style":109},[1504],{"type":26,"value":1164},{"type":20,"tag":102,"props":1506,"children":1507},{"style":1148},[1508],{"type":26,"value":1169},{"type":20,"tag":102,"props":1510,"children":1511},{"style":631},[1512],{"type":26,"value":1513},"-public-",{"type":20,"tag":102,"props":1515,"children":1516},{"style":1148},[1517],{"type":26,"value":1151},{"type":20,"tag":102,"props":1519,"children":1520},{"style":109},[1521],{"type":26,"value":873},{"type":20,"tag":102,"props":1523,"children":1524},{"style":554},[1525],{"type":26,"value":41},{"type":20,"tag":102,"props":1527,"children":1528},{"style":109},[1529],{"type":26,"value":852},{"type":20,"tag":102,"props":1531,"children":1532},{"style":625},[1533],{"type":26,"value":1366},{"type":20,"tag":102,"props":1535,"children":1536},{"style":109},[1537],{"type":26,"value":1371},{"type":20,"tag":102,"props":1539,"children":1540},{"style":554},[1541],{"type":26,"value":41},{"type":20,"tag":102,"props":1543,"children":1544},{"style":109},[1545],{"type":26,"value":1380},{"type":20,"tag":102,"props":1547,"children":1548},{"style":625},[1549],{"type":26,"value":1550},"]",{"type":20,"tag":102,"props":1552,"children":1553},{"style":1148},[1554],{"type":26,"value":1169},{"type":20,"tag":102,"props":1556,"children":1557},{"style":625},[1558],{"type":26,"value":639},{"type":20,"tag":102,"props":1560,"children":1561},{"class":104,"line":474},[1562,1566,1570],{"type":20,"tag":102,"props":1563,"children":1564},{"style":109},[1565],{"type":26,"value":1186},{"type":20,"tag":102,"props":1567,"children":1568},{"style":554},[1569],{"type":26,"value":557},{"type":20,"tag":102,"props":1571,"children":1572},{"style":870},[1573],{"type":26,"value":1195},{"type":20,"tag":102,"props":1575,"children":1576},{"class":104,"line":483},[1577,1582,1586,1590,1595],{"type":20,"tag":102,"props":1578,"children":1579},{"style":109},[1580],{"type":26,"value":1581},"    Tier",{"type":20,"tag":102,"props":1583,"children":1584},{"style":554},[1585],{"type":26,"value":1141},{"type":20,"tag":102,"props":1587,"children":1588},{"style":625},[1589],{"type":26,"value":628},{"type":20,"tag":102,"props":1591,"children":1592},{"style":631},[1593],{"type":26,"value":1594},"public",{"type":20,"tag":102,"props":1596,"children":1597},{"style":625},[1598],{"type":26,"value":639},{"type":20,"tag":102,"props":1600,"children":1601},{"class":104,"line":492},[1602],{"type":20,"tag":102,"props":1603,"children":1604},{"style":540},[1605],{"type":26,"value":1227},{"type":20,"tag":102,"props":1607,"children":1609},{"class":104,"line":1608},46,[1610],{"type":20,"tag":102,"props":1611,"children":1612},{"style":540},[1613],{"type":26,"value":571},{"type":20,"tag":102,"props":1615,"children":1617},{"class":104,"line":1616},47,[1618],{"type":20,"tag":102,"props":1619,"children":1620},{"emptyLinePlaceholder":146},[1621],{"type":26,"value":149},{"type":20,"tag":102,"props":1623,"children":1625},{"class":104,"line":1624},48,[1626,1630,1634,1639],{"type":20,"tag":102,"props":1627,"children":1628},{"style":528},[1629],{"type":26,"value":1030},{"type":20,"tag":102,"props":1631,"children":1632},{"style":534},[1633],{"type":26,"value":1253},{"type":20,"tag":102,"props":1635,"children":1636},{"style":534},[1637],{"type":26,"value":1638}," \"private\"",{"type":20,"tag":102,"props":1640,"children":1641},{"style":540},[1642],{"type":26,"value":543},{"type":20,"tag":102,"props":1644,"children":1646},{"class":104,"line":1645},49,[1647,1651,1655,1659,1663,1667,1671,1675],{"type":20,"tag":102,"props":1648,"children":1649},{"style":109},[1650],{"type":26,"value":1270},{"type":20,"tag":102,"props":1652,"children":1653},{"style":554},[1654],{"type":26,"value":1275},{"type":20,"tag":102,"props":1656,"children":1657},{"style":860},[1658],{"type":26,"value":1280},{"type":20,"tag":102,"props":1660,"children":1661},{"style":540},[1662],{"type":26,"value":690},{"type":20,"tag":102,"props":1664,"children":1665},{"style":870},[1666],{"type":26,"value":873},{"type":20,"tag":102,"props":1668,"children":1669},{"style":554},[1670],{"type":26,"value":41},{"type":20,"tag":102,"props":1672,"children":1673},{"style":109},[1674],{"type":26,"value":852},{"type":20,"tag":102,"props":1676,"children":1677},{"style":540},[1678],{"type":26,"value":700},{"type":20,"tag":102,"props":1680,"children":1682},{"class":104,"line":1681},50,[1683,1687,1691,1695,1699,1703,1707],{"type":20,"tag":102,"props":1684,"children":1685},{"style":109},[1686],{"type":26,"value":1308},{"type":20,"tag":102,"props":1688,"children":1689},{"style":554},[1690],{"type":26,"value":1313},{"type":20,"tag":102,"props":1692,"children":1693},{"style":870},[1694],{"type":26,"value":1318},{"type":20,"tag":102,"props":1696,"children":1697},{"style":554},[1698],{"type":26,"value":41},{"type":20,"tag":102,"props":1700,"children":1701},{"style":109},[1702],{"type":26,"value":1327},{"type":20,"tag":102,"props":1704,"children":1705},{"style":554},[1706],{"type":26,"value":41},{"type":20,"tag":102,"props":1708,"children":1709},{"style":109},[1710],{"type":26,"value":1336},{"type":20,"tag":102,"props":1712,"children":1714},{"class":104,"line":1713},51,[1715,1719,1723,1727,1731,1736,1740,1744,1748,1752],{"type":20,"tag":102,"props":1716,"children":1717},{"style":109},[1718],{"type":26,"value":1052},{"type":20,"tag":102,"props":1720,"children":1721},{"style":554},[1722],{"type":26,"value":1141},{"type":20,"tag":102,"props":1724,"children":1725},{"style":870},[1726],{"type":26,"value":1352},{"type":20,"tag":102,"props":1728,"children":1729},{"style":554},[1730],{"type":26,"value":41},{"type":20,"tag":102,"props":1732,"children":1733},{"style":109},[1734],{"type":26,"value":1735},"private_subnets",{"type":20,"tag":102,"props":1737,"children":1738},{"style":540},[1739],{"type":26,"value":1366},{"type":20,"tag":102,"props":1741,"children":1742},{"style":109},[1743],{"type":26,"value":1371},{"type":20,"tag":102,"props":1745,"children":1746},{"style":554},[1747],{"type":26,"value":41},{"type":20,"tag":102,"props":1749,"children":1750},{"style":109},[1751],{"type":26,"value":1380},{"type":20,"tag":102,"props":1753,"children":1754},{"style":540},[1755],{"type":26,"value":770},{"type":20,"tag":102,"props":1757,"children":1759},{"class":104,"line":1758},52,[1760,1764,1768,1772,1776,1780,1784,1788,1792,1796],{"type":20,"tag":102,"props":1761,"children":1762},{"style":109},[1763],{"type":26,"value":1392},{"type":20,"tag":102,"props":1765,"children":1766},{"style":554},[1767],{"type":26,"value":557},{"type":20,"tag":102,"props":1769,"children":1770},{"style":870},[1771],{"type":26,"value":843},{"type":20,"tag":102,"props":1773,"children":1774},{"style":554},[1775],{"type":26,"value":41},{"type":20,"tag":102,"props":1777,"children":1778},{"style":109},[1779],{"type":26,"value":852},{"type":20,"tag":102,"props":1781,"children":1782},{"style":540},[1783],{"type":26,"value":1366},{"type":20,"tag":102,"props":1785,"children":1786},{"style":109},[1787],{"type":26,"value":1371},{"type":20,"tag":102,"props":1789,"children":1790},{"style":554},[1791],{"type":26,"value":41},{"type":20,"tag":102,"props":1793,"children":1794},{"style":109},[1795],{"type":26,"value":1380},{"type":20,"tag":102,"props":1797,"children":1798},{"style":540},[1799],{"type":26,"value":770},{"type":20,"tag":102,"props":1801,"children":1803},{"class":104,"line":1802},53,[1804],{"type":20,"tag":102,"props":1805,"children":1806},{"emptyLinePlaceholder":146},[1807],{"type":26,"value":149},{"type":20,"tag":102,"props":1809,"children":1811},{"class":104,"line":1810},54,[1812,1816,1820],{"type":20,"tag":102,"props":1813,"children":1814},{"style":109},[1815],{"type":26,"value":1120},{"type":20,"tag":102,"props":1817,"children":1818},{"style":554},[1819],{"type":26,"value":557},{"type":20,"tag":102,"props":1821,"children":1822},{"style":540},[1823],{"type":26,"value":543},{"type":20,"tag":102,"props":1825,"children":1827},{"class":104,"line":1826},55,[1828,1832,1836,1840,1844,1848,1852,1856,1860,1865,1869,1873,1877,1881,1885,1889,1893,1897,1901,1905],{"type":20,"tag":102,"props":1829,"children":1830},{"style":109},[1831],{"type":26,"value":1136},{"type":20,"tag":102,"props":1833,"children":1834},{"style":554},[1835],{"type":26,"value":1141},{"type":20,"tag":102,"props":1837,"children":1838},{"style":625},[1839],{"type":26,"value":628},{"type":20,"tag":102,"props":1841,"children":1842},{"style":1148},[1843],{"type":26,"value":1151},{"type":20,"tag":102,"props":1845,"children":1846},{"style":109},[1847],{"type":26,"value":873},{"type":20,"tag":102,"props":1849,"children":1850},{"style":554},[1851],{"type":26,"value":41},{"type":20,"tag":102,"props":1853,"children":1854},{"style":109},[1855],{"type":26,"value":1164},{"type":20,"tag":102,"props":1857,"children":1858},{"style":1148},[1859],{"type":26,"value":1169},{"type":20,"tag":102,"props":1861,"children":1862},{"style":631},[1863],{"type":26,"value":1864},"-private-",{"type":20,"tag":102,"props":1866,"children":1867},{"style":1148},[1868],{"type":26,"value":1151},{"type":20,"tag":102,"props":1870,"children":1871},{"style":109},[1872],{"type":26,"value":873},{"type":20,"tag":102,"props":1874,"children":1875},{"style":554},[1876],{"type":26,"value":41},{"type":20,"tag":102,"props":1878,"children":1879},{"style":109},[1880],{"type":26,"value":852},{"type":20,"tag":102,"props":1882,"children":1883},{"style":625},[1884],{"type":26,"value":1366},{"type":20,"tag":102,"props":1886,"children":1887},{"style":109},[1888],{"type":26,"value":1371},{"type":20,"tag":102,"props":1890,"children":1891},{"style":554},[1892],{"type":26,"value":41},{"type":20,"tag":102,"props":1894,"children":1895},{"style":109},[1896],{"type":26,"value":1380},{"type":20,"tag":102,"props":1898,"children":1899},{"style":625},[1900],{"type":26,"value":1550},{"type":20,"tag":102,"props":1902,"children":1903},{"style":1148},[1904],{"type":26,"value":1169},{"type":20,"tag":102,"props":1906,"children":1907},{"style":625},[1908],{"type":26,"value":639},{"type":20,"tag":102,"props":1910,"children":1912},{"class":104,"line":1911},56,[1913,1917,1921],{"type":20,"tag":102,"props":1914,"children":1915},{"style":109},[1916],{"type":26,"value":1186},{"type":20,"tag":102,"props":1918,"children":1919},{"style":554},[1920],{"type":26,"value":557},{"type":20,"tag":102,"props":1922,"children":1923},{"style":870},[1924],{"type":26,"value":1195},{"type":20,"tag":102,"props":1926,"children":1928},{"class":104,"line":1927},57,[1929,1933,1937,1941,1946],{"type":20,"tag":102,"props":1930,"children":1931},{"style":109},[1932],{"type":26,"value":1581},{"type":20,"tag":102,"props":1934,"children":1935},{"style":554},[1936],{"type":26,"value":1141},{"type":20,"tag":102,"props":1938,"children":1939},{"style":625},[1940],{"type":26,"value":628},{"type":20,"tag":102,"props":1942,"children":1943},{"style":631},[1944],{"type":26,"value":1945},"private",{"type":20,"tag":102,"props":1947,"children":1948},{"style":625},[1949],{"type":26,"value":639},{"type":20,"tag":102,"props":1951,"children":1953},{"class":104,"line":1952},58,[1954],{"type":20,"tag":102,"props":1955,"children":1956},{"style":540},[1957],{"type":26,"value":1227},{"type":20,"tag":102,"props":1959,"children":1961},{"class":104,"line":1960},59,[1962],{"type":20,"tag":102,"props":1963,"children":1964},{"style":540},[1965],{"type":26,"value":571},{"type":20,"tag":102,"props":1967,"children":1969},{"class":104,"line":1968},60,[1970],{"type":20,"tag":102,"props":1971,"children":1972},{"emptyLinePlaceholder":146},[1973],{"type":26,"value":149},{"type":20,"tag":102,"props":1975,"children":1977},{"class":104,"line":1976},61,[1978],{"type":20,"tag":102,"props":1979,"children":1980},{"style":519},[1981],{"type":26,"value":1982},"# NAT Gateway (single for cost savings, multi-AZ for production)\n",{"type":20,"tag":102,"props":1984,"children":1986},{"class":104,"line":1985},62,[1987,1991,1996,2001],{"type":20,"tag":102,"props":1988,"children":1989},{"style":528},[1990],{"type":26,"value":1030},{"type":20,"tag":102,"props":1992,"children":1993},{"style":534},[1994],{"type":26,"value":1995}," \"aws_eip\"",{"type":20,"tag":102,"props":1997,"children":1998},{"style":534},[1999],{"type":26,"value":2000}," \"nat\"",{"type":20,"tag":102,"props":2002,"children":2003},{"style":540},[2004],{"type":26,"value":543},{"type":20,"tag":102,"props":2006,"children":2008},{"class":104,"line":2007},63,[2009,2013,2017,2021,2025,2029,2034,2038,2043,2047,2052,2056,2060,2064,2068,2072,2077,2081],{"type":20,"tag":102,"props":2010,"children":2011},{"style":109},[2012],{"type":26,"value":1270},{"type":20,"tag":102,"props":2014,"children":2015},{"style":554},[2016],{"type":26,"value":809},{"type":20,"tag":102,"props":2018,"children":2019},{"style":870},[2020],{"type":26,"value":843},{"type":20,"tag":102,"props":2022,"children":2023},{"style":554},[2024],{"type":26,"value":41},{"type":20,"tag":102,"props":2026,"children":2027},{"style":109},[2028],{"type":26,"value":1164},{"type":20,"tag":102,"props":2030,"children":2031},{"style":554},[2032],{"type":26,"value":2033}," ==",{"type":20,"tag":102,"props":2035,"children":2036},{"style":625},[2037],{"type":26,"value":628},{"type":20,"tag":102,"props":2039,"children":2040},{"style":631},[2041],{"type":26,"value":2042},"production",{"type":20,"tag":102,"props":2044,"children":2045},{"style":625},[2046],{"type":26,"value":721},{"type":20,"tag":102,"props":2048,"children":2049},{"style":554},[2050],{"type":26,"value":2051}," ?",{"type":20,"tag":102,"props":2053,"children":2054},{"style":860},[2055],{"type":26,"value":1280},{"type":20,"tag":102,"props":2057,"children":2058},{"style":540},[2059],{"type":26,"value":690},{"type":20,"tag":102,"props":2061,"children":2062},{"style":870},[2063],{"type":26,"value":873},{"type":20,"tag":102,"props":2065,"children":2066},{"style":554},[2067],{"type":26,"value":41},{"type":20,"tag":102,"props":2069,"children":2070},{"style":109},[2071],{"type":26,"value":852},{"type":20,"tag":102,"props":2073,"children":2074},{"style":540},[2075],{"type":26,"value":2076},")",{"type":20,"tag":102,"props":2078,"children":2079},{"style":554},[2080],{"type":26,"value":857},{"type":20,"tag":102,"props":2082,"children":2083},{"style":889},[2084],{"type":26,"value":2085}," 1\n",{"type":20,"tag":102,"props":2087,"children":2089},{"class":104,"line":2088},64,[2090,2095,2099,2103,2108],{"type":20,"tag":102,"props":2091,"children":2092},{"style":109},[2093],{"type":26,"value":2094},"  domain",{"type":20,"tag":102,"props":2096,"children":2097},{"style":554},[2098],{"type":26,"value":557},{"type":20,"tag":102,"props":2100,"children":2101},{"style":625},[2102],{"type":26,"value":628},{"type":20,"tag":102,"props":2104,"children":2105},{"style":631},[2106],{"type":26,"value":2107},"vpc",{"type":20,"tag":102,"props":2109,"children":2110},{"style":625},[2111],{"type":26,"value":639},{"type":20,"tag":102,"props":2113,"children":2115},{"class":104,"line":2114},65,[2116],{"type":20,"tag":102,"props":2117,"children":2118},{"style":540},[2119],{"type":26,"value":571},{"type":20,"tag":102,"props":2121,"children":2123},{"class":104,"line":2122},66,[2124],{"type":20,"tag":102,"props":2125,"children":2126},{"emptyLinePlaceholder":146},[2127],{"type":26,"value":149},{"type":20,"tag":102,"props":2129,"children":2131},{"class":104,"line":2130},67,[2132,2136,2141,2145],{"type":20,"tag":102,"props":2133,"children":2134},{"style":528},[2135],{"type":26,"value":1030},{"type":20,"tag":102,"props":2137,"children":2138},{"style":534},[2139],{"type":26,"value":2140}," \"aws_nat_gateway\"",{"type":20,"tag":102,"props":2142,"children":2143},{"style":534},[2144],{"type":26,"value":1040},{"type":20,"tag":102,"props":2146,"children":2147},{"style":540},[2148],{"type":26,"value":543},{"type":20,"tag":102,"props":2150,"children":2152},{"class":104,"line":2151},68,[2153,2157,2162,2166,2170,2174,2178,2182,2186,2190,2194,2198,2202,2206,2210,2214,2218,2222],{"type":20,"tag":102,"props":2154,"children":2155},{"style":109},[2156],{"type":26,"value":1270},{"type":20,"tag":102,"props":2158,"children":2159},{"style":554},[2160],{"type":26,"value":2161},"         =",{"type":20,"tag":102,"props":2163,"children":2164},{"style":870},[2165],{"type":26,"value":843},{"type":20,"tag":102,"props":2167,"children":2168},{"style":554},[2169],{"type":26,"value":41},{"type":20,"tag":102,"props":2171,"children":2172},{"style":109},[2173],{"type":26,"value":1164},{"type":20,"tag":102,"props":2175,"children":2176},{"style":554},[2177],{"type":26,"value":2033},{"type":20,"tag":102,"props":2179,"children":2180},{"style":625},[2181],{"type":26,"value":628},{"type":20,"tag":102,"props":2183,"children":2184},{"style":631},[2185],{"type":26,"value":2042},{"type":20,"tag":102,"props":2187,"children":2188},{"style":625},[2189],{"type":26,"value":721},{"type":20,"tag":102,"props":2191,"children":2192},{"style":554},[2193],{"type":26,"value":2051},{"type":20,"tag":102,"props":2195,"children":2196},{"style":860},[2197],{"type":26,"value":1280},{"type":20,"tag":102,"props":2199,"children":2200},{"style":540},[2201],{"type":26,"value":690},{"type":20,"tag":102,"props":2203,"children":2204},{"style":870},[2205],{"type":26,"value":873},{"type":20,"tag":102,"props":2207,"children":2208},{"style":554},[2209],{"type":26,"value":41},{"type":20,"tag":102,"props":2211,"children":2212},{"style":109},[2213],{"type":26,"value":852},{"type":20,"tag":102,"props":2215,"children":2216},{"style":540},[2217],{"type":26,"value":2076},{"type":20,"tag":102,"props":2219,"children":2220},{"style":554},[2221],{"type":26,"value":857},{"type":20,"tag":102,"props":2223,"children":2224},{"style":889},[2225],{"type":26,"value":2085},{"type":20,"tag":102,"props":2227,"children":2229},{"class":104,"line":2228},69,[2230,2235,2239,2244,2248,2253,2257,2261,2265,2269,2273,2277],{"type":20,"tag":102,"props":2231,"children":2232},{"style":109},[2233],{"type":26,"value":2234},"  allocation_id",{"type":20,"tag":102,"props":2236,"children":2237},{"style":554},[2238],{"type":26,"value":557},{"type":20,"tag":102,"props":2240,"children":2241},{"style":870},[2242],{"type":26,"value":2243}," aws_eip",{"type":20,"tag":102,"props":2245,"children":2246},{"style":554},[2247],{"type":26,"value":41},{"type":20,"tag":102,"props":2249,"children":2250},{"style":109},[2251],{"type":26,"value":2252},"nat",{"type":20,"tag":102,"props":2254,"children":2255},{"style":540},[2256],{"type":26,"value":1366},{"type":20,"tag":102,"props":2258,"children":2259},{"style":109},[2260],{"type":26,"value":1371},{"type":20,"tag":102,"props":2262,"children":2263},{"style":554},[2264],{"type":26,"value":41},{"type":20,"tag":102,"props":2266,"children":2267},{"style":109},[2268],{"type":26,"value":1380},{"type":20,"tag":102,"props":2270,"children":2271},{"style":540},[2272],{"type":26,"value":1550},{"type":20,"tag":102,"props":2274,"children":2275},{"style":554},[2276],{"type":26,"value":41},{"type":20,"tag":102,"props":2278,"children":2279},{"style":109},[2280],{"type":26,"value":1336},{"type":20,"tag":102,"props":2282,"children":2284},{"class":104,"line":2283},70,[2285,2290,2295,2300,2304,2308,2312,2316,2320,2324,2328,2332],{"type":20,"tag":102,"props":2286,"children":2287},{"style":109},[2288],{"type":26,"value":2289},"  subnet_id",{"type":20,"tag":102,"props":2291,"children":2292},{"style":554},[2293],{"type":26,"value":2294},"     =",{"type":20,"tag":102,"props":2296,"children":2297},{"style":870},[2298],{"type":26,"value":2299}," aws_subnet",{"type":20,"tag":102,"props":2301,"children":2302},{"style":554},[2303],{"type":26,"value":41},{"type":20,"tag":102,"props":2305,"children":2306},{"style":109},[2307],{"type":26,"value":1594},{"type":20,"tag":102,"props":2309,"children":2310},{"style":540},[2311],{"type":26,"value":1366},{"type":20,"tag":102,"props":2313,"children":2314},{"style":109},[2315],{"type":26,"value":1371},{"type":20,"tag":102,"props":2317,"children":2318},{"style":554},[2319],{"type":26,"value":41},{"type":20,"tag":102,"props":2321,"children":2322},{"style":109},[2323],{"type":26,"value":1380},{"type":20,"tag":102,"props":2325,"children":2326},{"style":540},[2327],{"type":26,"value":1550},{"type":20,"tag":102,"props":2329,"children":2330},{"style":554},[2331],{"type":26,"value":41},{"type":20,"tag":102,"props":2333,"children":2334},{"style":109},[2335],{"type":26,"value":1336},{"type":20,"tag":102,"props":2337,"children":2339},{"class":104,"line":2338},71,[2340],{"type":20,"tag":102,"props":2341,"children":2342},{"style":540},[2343],{"type":26,"value":571},{"type":20,"tag":102,"props":2345,"children":2347},{"class":104,"line":2346},72,[2348],{"type":20,"tag":102,"props":2349,"children":2350},{"emptyLinePlaceholder":146},[2351],{"type":26,"value":149},{"type":20,"tag":102,"props":2353,"children":2355},{"class":104,"line":2354},73,[2356,2361,2366],{"type":20,"tag":102,"props":2357,"children":2358},{"style":528},[2359],{"type":26,"value":2360},"output",{"type":20,"tag":102,"props":2362,"children":2363},{"style":534},[2364],{"type":26,"value":2365}," \"vpc_id\"",{"type":20,"tag":102,"props":2367,"children":2368},{"style":540},[2369],{"type":26,"value":543},{"type":20,"tag":102,"props":2371,"children":2373},{"class":104,"line":2372},74,[2374,2379,2383,2387,2391,2395,2399],{"type":20,"tag":102,"props":2375,"children":2376},{"style":109},[2377],{"type":26,"value":2378},"  value",{"type":20,"tag":102,"props":2380,"children":2381},{"style":554},[2382],{"type":26,"value":557},{"type":20,"tag":102,"props":2384,"children":2385},{"style":870},[2386],{"type":26,"value":1318},{"type":20,"tag":102,"props":2388,"children":2389},{"style":554},[2390],{"type":26,"value":41},{"type":20,"tag":102,"props":2392,"children":2393},{"style":109},[2394],{"type":26,"value":1327},{"type":20,"tag":102,"props":2396,"children":2397},{"style":554},[2398],{"type":26,"value":41},{"type":20,"tag":102,"props":2400,"children":2401},{"style":109},[2402],{"type":26,"value":1336},{"type":20,"tag":102,"props":2404,"children":2406},{"class":104,"line":2405},75,[2407],{"type":20,"tag":102,"props":2408,"children":2409},{"style":540},[2410],{"type":26,"value":571},{"type":20,"tag":102,"props":2412,"children":2414},{"class":104,"line":2413},76,[2415],{"type":20,"tag":102,"props":2416,"children":2417},{"emptyLinePlaceholder":146},[2418],{"type":26,"value":149},{"type":20,"tag":102,"props":2420,"children":2422},{"class":104,"line":2421},77,[2423,2427,2432],{"type":20,"tag":102,"props":2424,"children":2425},{"style":528},[2426],{"type":26,"value":2360},{"type":20,"tag":102,"props":2428,"children":2429},{"style":534},[2430],{"type":26,"value":2431}," \"private_subnet_ids\"",{"type":20,"tag":102,"props":2433,"children":2434},{"style":540},[2435],{"type":26,"value":543},{"type":20,"tag":102,"props":2437,"children":2439},{"class":104,"line":2438},78,[2440,2444,2448,2452,2456,2460,2464,2469,2473,2477],{"type":20,"tag":102,"props":2441,"children":2442},{"style":109},[2443],{"type":26,"value":2378},{"type":20,"tag":102,"props":2445,"children":2446},{"style":554},[2447],{"type":26,"value":557},{"type":20,"tag":102,"props":2449,"children":2450},{"style":870},[2451],{"type":26,"value":2299},{"type":20,"tag":102,"props":2453,"children":2454},{"style":554},[2455],{"type":26,"value":41},{"type":20,"tag":102,"props":2457,"children":2458},{"style":109},[2459],{"type":26,"value":1945},{"type":20,"tag":102,"props":2461,"children":2462},{"style":540},[2463],{"type":26,"value":1366},{"type":20,"tag":102,"props":2465,"children":2466},{"style":554},[2467],{"type":26,"value":2468},"*",{"type":20,"tag":102,"props":2470,"children":2471},{"style":540},[2472],{"type":26,"value":1550},{"type":20,"tag":102,"props":2474,"children":2475},{"style":554},[2476],{"type":26,"value":41},{"type":20,"tag":102,"props":2478,"children":2479},{"style":109},[2480],{"type":26,"value":1336},{"type":20,"tag":102,"props":2482,"children":2484},{"class":104,"line":2483},79,[2485],{"type":20,"tag":102,"props":2486,"children":2487},{"style":540},[2488],{"type":26,"value":571},{"type":20,"tag":102,"props":2490,"children":2492},{"class":104,"line":2491},80,[2493],{"type":20,"tag":102,"props":2494,"children":2495},{"emptyLinePlaceholder":146},[2496],{"type":26,"value":149},{"type":20,"tag":102,"props":2498,"children":2500},{"class":104,"line":2499},81,[2501,2505,2510],{"type":20,"tag":102,"props":2502,"children":2503},{"style":528},[2504],{"type":26,"value":2360},{"type":20,"tag":102,"props":2506,"children":2507},{"style":534},[2508],{"type":26,"value":2509}," \"public_subnet_ids\"",{"type":20,"tag":102,"props":2511,"children":2512},{"style":540},[2513],{"type":26,"value":543},{"type":20,"tag":102,"props":2515,"children":2517},{"class":104,"line":2516},82,[2518,2522,2526,2530,2534,2538,2542,2546,2550,2554],{"type":20,"tag":102,"props":2519,"children":2520},{"style":109},[2521],{"type":26,"value":2378},{"type":20,"tag":102,"props":2523,"children":2524},{"style":554},[2525],{"type":26,"value":557},{"type":20,"tag":102,"props":2527,"children":2528},{"style":870},[2529],{"type":26,"value":2299},{"type":20,"tag":102,"props":2531,"children":2532},{"style":554},[2533],{"type":26,"value":41},{"type":20,"tag":102,"props":2535,"children":2536},{"style":109},[2537],{"type":26,"value":1594},{"type":20,"tag":102,"props":2539,"children":2540},{"style":540},[2541],{"type":26,"value":1366},{"type":20,"tag":102,"props":2543,"children":2544},{"style":554},[2545],{"type":26,"value":2468},{"type":20,"tag":102,"props":2547,"children":2548},{"style":540},[2549],{"type":26,"value":1550},{"type":20,"tag":102,"props":2551,"children":2552},{"style":554},[2553],{"type":26,"value":41},{"type":20,"tag":102,"props":2555,"children":2556},{"style":109},[2557],{"type":26,"value":1336},{"type":20,"tag":102,"props":2559,"children":2561},{"class":104,"line":2560},83,[2562],{"type":20,"tag":102,"props":2563,"children":2564},{"style":540},[2565],{"type":26,"value":571},{"type":20,"tag":43,"props":2567,"children":2569},{"id":2568},"ecs-service-module",[2570],{"type":26,"value":2571},"ECS Service Module",{"type":20,"tag":92,"props":2573,"children":2575},{"className":507,"code":2574,"language":509,"meta":7,"style":7},"# modules/ecs-service/main.tf\nvariable \"cluster_id\" { type = string }\nvariable \"service_name\" { type = string }\nvariable \"image\" { type = string }\nvariable \"cpu\" { type = number, default = 256 }\nvariable \"memory\" { type = number, default = 512 }\nvariable \"desired_count\" { type = number, default = 2 }\nvariable \"min_count\" { type = number, default = 1 }\nvariable \"max_count\" { type = number, default = 10 }\nvariable \"port\" { type = number, default = 8080 }\nvariable \"subnet_ids\" { type = list(string) }\nvariable \"security_group_ids\" { type = list(string) }\nvariable \"target_group_arn\" { type = string }\n\nresource \"aws_ecs_task_definition\" \"service\" {\n  family                   = var.service_name\n  network_mode             = \"awsvpc\"\n  requires_compatibilities = [\"FARGATE\"]\n  cpu                      = var.cpu\n  memory                   = var.memory\n  execution_role_arn       = aws_iam_role.execution.arn\n  task_role_arn            = aws_iam_role.task.arn\n\n  container_definitions = jsonencode([{\n    name  = var.service_name\n    image = var.image\n    portMappings = [{\n      containerPort = var.port\n      protocol      = \"tcp\"\n    }]\n    logConfiguration = {\n      logDriver = \"awslogs\"\n      options = {\n        \"awslogs-group\"         = aws_cloudwatch_log_group.service.name\n        \"awslogs-region\"        = data.aws_region.current.name\n        \"awslogs-stream-prefix\" = \"ecs\"\n      }\n    }\n    environment = [\n      { name = \"OTEL_EXPORTER_OTLP_ENDPOINT\", value = \"http://otel-collector:4317\" },\n      { name = \"OTEL_SERVICE_NAME\", value = var.service_name },\n    ]\n  }])\n}\n\nresource \"aws_ecs_service\" \"service\" {\n  name            = var.service_name\n  cluster         = var.cluster_id\n  task_definition = aws_ecs_task_definition.service.arn\n  desired_count   = var.desired_count\n  launch_type     = \"FARGATE\"\n\n  network_configuration {\n    subnets         = var.subnet_ids\n    security_groups = var.security_group_ids\n  }\n\n  load_balancer {\n    target_group_arn = var.target_group_arn\n    container_name   = var.service_name\n    container_port   = var.port\n  }\n\n  deployment_circuit_breaker {\n    enable   = true\n    rollback = true\n  }\n\n  lifecycle {\n    ignore_changes = [desired_count]\n  }\n}\n\n# Autoscaling\nresource \"aws_appautoscaling_target\" \"service\" {\n  max_capacity       = var.max_count\n  min_capacity       = var.min_count\n  resource_id        = \"service/${split(\"/\", var.cluster_id)[1]}/${aws_ecs_service.service.name}\"\n  scalable_dimension = \"ecs:service:DesiredCount\"\n  service_namespace  = \"ecs\"\n}\n\nresource \"aws_appautoscaling_policy\" \"cpu\" {\n  name               = \"${var.service_name}-cpu\"\n  policy_type        = \"TargetTrackingScaling\"\n  resource_id        = aws_appautoscaling_target.service.resource_id\n  scalable_dimension = aws_appautoscaling_target.service.scalable_dimension\n  service_namespace  = aws_appautoscaling_target.service.service_namespace\n\n  target_tracking_scaling_policy_configuration {\n    target_value       = 60.0\n    scale_in_cooldown  = 300\n    scale_out_cooldown = 60\n    predefined_metric_specification {\n      predefined_metric_type = \"ECSServiceAverageCPUUtilization\"\n    }\n  }\n}\n",[2576],{"type":20,"tag":34,"props":2577,"children":2578},{"__ignoreMap":7},[2579,2587,2623,2655,2687,2739,2788,2837,2886,2934,2983,3027,3071,3103,3110,3131,3157,3182,3215,3241,3266,3302,3335,3342,3364,3381,3398,3419,3436,3462,3474,3490,3515,3531,3557,3582,3615,3623,3631,3648,3714,3767,3775,3783,3790,3797,3817,3841,3866,3900,3925,3949,3956,3968,3993,4018,4025,4032,4044,4069,4093,4118,4125,4132,4144,4160,4176,4183,4190,4202,4227,4234,4241,4248,4256,4276,4301,4326,4440,4465,4489,4496,4503,4523,4570,4596,4630,4663,4696,4704,4717,4744,4762,4780,4793,4819,4827,4835],{"type":20,"tag":102,"props":2580,"children":2581},{"class":104,"line":105},[2582],{"type":20,"tag":102,"props":2583,"children":2584},{"style":519},[2585],{"type":26,"value":2586},"# modules/ecs-service/main.tf\n",{"type":20,"tag":102,"props":2588,"children":2589},{"class":104,"line":115},[2590,2594,2599,2604,2609,2613,2618],{"type":20,"tag":102,"props":2591,"children":2592},{"style":528},[2593],{"type":26,"value":531},{"type":20,"tag":102,"props":2595,"children":2596},{"style":534},[2597],{"type":26,"value":2598}," \"cluster_id\"",{"type":20,"tag":102,"props":2600,"children":2601},{"style":540},[2602],{"type":26,"value":2603}," {",{"type":20,"tag":102,"props":2605,"children":2606},{"style":109},[2607],{"type":26,"value":2608}," type",{"type":20,"tag":102,"props":2610,"children":2611},{"style":554},[2612],{"type":26,"value":557},{"type":20,"tag":102,"props":2614,"children":2615},{"style":560},[2616],{"type":26,"value":2617}," string",{"type":20,"tag":102,"props":2619,"children":2620},{"style":540},[2621],{"type":26,"value":2622}," }\n",{"type":20,"tag":102,"props":2624,"children":2625},{"class":104,"line":124},[2626,2630,2635,2639,2643,2647,2651],{"type":20,"tag":102,"props":2627,"children":2628},{"style":528},[2629],{"type":26,"value":531},{"type":20,"tag":102,"props":2631,"children":2632},{"style":534},[2633],{"type":26,"value":2634}," \"service_name\"",{"type":20,"tag":102,"props":2636,"children":2637},{"style":540},[2638],{"type":26,"value":2603},{"type":20,"tag":102,"props":2640,"children":2641},{"style":109},[2642],{"type":26,"value":2608},{"type":20,"tag":102,"props":2644,"children":2645},{"style":554},[2646],{"type":26,"value":557},{"type":20,"tag":102,"props":2648,"children":2649},{"style":560},[2650],{"type":26,"value":2617},{"type":20,"tag":102,"props":2652,"children":2653},{"style":540},[2654],{"type":26,"value":2622},{"type":20,"tag":102,"props":2656,"children":2657},{"class":104,"line":133},[2658,2662,2667,2671,2675,2679,2683],{"type":20,"tag":102,"props":2659,"children":2660},{"style":528},[2661],{"type":26,"value":531},{"type":20,"tag":102,"props":2663,"children":2664},{"style":534},[2665],{"type":26,"value":2666}," \"image\"",{"type":20,"tag":102,"props":2668,"children":2669},{"style":540},[2670],{"type":26,"value":2603},{"type":20,"tag":102,"props":2672,"children":2673},{"style":109},[2674],{"type":26,"value":2608},{"type":20,"tag":102,"props":2676,"children":2677},{"style":554},[2678],{"type":26,"value":557},{"type":20,"tag":102,"props":2680,"children":2681},{"style":560},[2682],{"type":26,"value":2617},{"type":20,"tag":102,"props":2684,"children":2685},{"style":540},[2686],{"type":26,"value":2622},{"type":20,"tag":102,"props":2688,"children":2689},{"class":104,"line":142},[2690,2694,2699,2703,2707,2711,2716,2721,2726,2730,2735],{"type":20,"tag":102,"props":2691,"children":2692},{"style":528},[2693],{"type":26,"value":531},{"type":20,"tag":102,"props":2695,"children":2696},{"style":534},[2697],{"type":26,"value":2698}," \"cpu\"",{"type":20,"tag":102,"props":2700,"children":2701},{"style":540},[2702],{"type":26,"value":2603},{"type":20,"tag":102,"props":2704,"children":2705},{"style":109},[2706],{"type":26,"value":2608},{"type":20,"tag":102,"props":2708,"children":2709},{"style":554},[2710],{"type":26,"value":557},{"type":20,"tag":102,"props":2712,"children":2713},{"style":560},[2714],{"type":26,"value":2715}," number",{"type":20,"tag":102,"props":2717,"children":2718},{"style":870},[2719],{"type":26,"value":2720},", ",{"type":20,"tag":102,"props":2722,"children":2723},{"style":109},[2724],{"type":26,"value":2725},"default",{"type":20,"tag":102,"props":2727,"children":2728},{"style":554},[2729],{"type":26,"value":557},{"type":20,"tag":102,"props":2731,"children":2732},{"style":889},[2733],{"type":26,"value":2734}," 256",{"type":20,"tag":102,"props":2736,"children":2737},{"style":540},[2738],{"type":26,"value":2622},{"type":20,"tag":102,"props":2740,"children":2741},{"class":104,"line":152},[2742,2746,2751,2755,2759,2763,2767,2771,2775,2779,2784],{"type":20,"tag":102,"props":2743,"children":2744},{"style":528},[2745],{"type":26,"value":531},{"type":20,"tag":102,"props":2747,"children":2748},{"style":534},[2749],{"type":26,"value":2750}," \"memory\"",{"type":20,"tag":102,"props":2752,"children":2753},{"style":540},[2754],{"type":26,"value":2603},{"type":20,"tag":102,"props":2756,"children":2757},{"style":109},[2758],{"type":26,"value":2608},{"type":20,"tag":102,"props":2760,"children":2761},{"style":554},[2762],{"type":26,"value":557},{"type":20,"tag":102,"props":2764,"children":2765},{"style":560},[2766],{"type":26,"value":2715},{"type":20,"tag":102,"props":2768,"children":2769},{"style":870},[2770],{"type":26,"value":2720},{"type":20,"tag":102,"props":2772,"children":2773},{"style":109},[2774],{"type":26,"value":2725},{"type":20,"tag":102,"props":2776,"children":2777},{"style":554},[2778],{"type":26,"value":557},{"type":20,"tag":102,"props":2780,"children":2781},{"style":889},[2782],{"type":26,"value":2783}," 512",{"type":20,"tag":102,"props":2785,"children":2786},{"style":540},[2787],{"type":26,"value":2622},{"type":20,"tag":102,"props":2789,"children":2790},{"class":104,"line":161},[2791,2795,2800,2804,2808,2812,2816,2820,2824,2828,2833],{"type":20,"tag":102,"props":2792,"children":2793},{"style":528},[2794],{"type":26,"value":531},{"type":20,"tag":102,"props":2796,"children":2797},{"style":534},[2798],{"type":26,"value":2799}," \"desired_count\"",{"type":20,"tag":102,"props":2801,"children":2802},{"style":540},[2803],{"type":26,"value":2603},{"type":20,"tag":102,"props":2805,"children":2806},{"style":109},[2807],{"type":26,"value":2608},{"type":20,"tag":102,"props":2809,"children":2810},{"style":554},[2811],{"type":26,"value":557},{"type":20,"tag":102,"props":2813,"children":2814},{"style":560},[2815],{"type":26,"value":2715},{"type":20,"tag":102,"props":2817,"children":2818},{"style":870},[2819],{"type":26,"value":2720},{"type":20,"tag":102,"props":2821,"children":2822},{"style":109},[2823],{"type":26,"value":2725},{"type":20,"tag":102,"props":2825,"children":2826},{"style":554},[2827],{"type":26,"value":557},{"type":20,"tag":102,"props":2829,"children":2830},{"style":889},[2831],{"type":26,"value":2832}," 2",{"type":20,"tag":102,"props":2834,"children":2835},{"style":540},[2836],{"type":26,"value":2622},{"type":20,"tag":102,"props":2838,"children":2839},{"class":104,"line":170},[2840,2844,2849,2853,2857,2861,2865,2869,2873,2877,2882],{"type":20,"tag":102,"props":2841,"children":2842},{"style":528},[2843],{"type":26,"value":531},{"type":20,"tag":102,"props":2845,"children":2846},{"style":534},[2847],{"type":26,"value":2848}," \"min_count\"",{"type":20,"tag":102,"props":2850,"children":2851},{"style":540},[2852],{"type":26,"value":2603},{"type":20,"tag":102,"props":2854,"children":2855},{"style":109},[2856],{"type":26,"value":2608},{"type":20,"tag":102,"props":2858,"children":2859},{"style":554},[2860],{"type":26,"value":557},{"type":20,"tag":102,"props":2862,"children":2863},{"style":560},[2864],{"type":26,"value":2715},{"type":20,"tag":102,"props":2866,"children":2867},{"style":870},[2868],{"type":26,"value":2720},{"type":20,"tag":102,"props":2870,"children":2871},{"style":109},[2872],{"type":26,"value":2725},{"type":20,"tag":102,"props":2874,"children":2875},{"style":554},[2876],{"type":26,"value":557},{"type":20,"tag":102,"props":2878,"children":2879},{"style":889},[2880],{"type":26,"value":2881}," 1",{"type":20,"tag":102,"props":2883,"children":2884},{"style":540},[2885],{"type":26,"value":2622},{"type":20,"tag":102,"props":2887,"children":2888},{"class":104,"line":178},[2889,2893,2898,2902,2906,2910,2914,2918,2922,2926,2930],{"type":20,"tag":102,"props":2890,"children":2891},{"style":528},[2892],{"type":26,"value":531},{"type":20,"tag":102,"props":2894,"children":2895},{"style":534},[2896],{"type":26,"value":2897}," \"max_count\"",{"type":20,"tag":102,"props":2899,"children":2900},{"style":540},[2901],{"type":26,"value":2603},{"type":20,"tag":102,"props":2903,"children":2904},{"style":109},[2905],{"type":26,"value":2608},{"type":20,"tag":102,"props":2907,"children":2908},{"style":554},[2909],{"type":26,"value":557},{"type":20,"tag":102,"props":2911,"children":2912},{"style":560},[2913],{"type":26,"value":2715},{"type":20,"tag":102,"props":2915,"children":2916},{"style":870},[2917],{"type":26,"value":2720},{"type":20,"tag":102,"props":2919,"children":2920},{"style":109},[2921],{"type":26,"value":2725},{"type":20,"tag":102,"props":2923,"children":2924},{"style":554},[2925],{"type":26,"value":557},{"type":20,"tag":102,"props":2927,"children":2928},{"style":889},[2929],{"type":26,"value":1004},{"type":20,"tag":102,"props":2931,"children":2932},{"style":540},[2933],{"type":26,"value":2622},{"type":20,"tag":102,"props":2935,"children":2936},{"class":104,"line":186},[2937,2941,2946,2950,2954,2958,2962,2966,2970,2974,2979],{"type":20,"tag":102,"props":2938,"children":2939},{"style":528},[2940],{"type":26,"value":531},{"type":20,"tag":102,"props":2942,"children":2943},{"style":534},[2944],{"type":26,"value":2945}," \"port\"",{"type":20,"tag":102,"props":2947,"children":2948},{"style":540},[2949],{"type":26,"value":2603},{"type":20,"tag":102,"props":2951,"children":2952},{"style":109},[2953],{"type":26,"value":2608},{"type":20,"tag":102,"props":2955,"children":2956},{"style":554},[2957],{"type":26,"value":557},{"type":20,"tag":102,"props":2959,"children":2960},{"style":560},[2961],{"type":26,"value":2715},{"type":20,"tag":102,"props":2963,"children":2964},{"style":870},[2965],{"type":26,"value":2720},{"type":20,"tag":102,"props":2967,"children":2968},{"style":109},[2969],{"type":26,"value":2725},{"type":20,"tag":102,"props":2971,"children":2972},{"style":554},[2973],{"type":26,"value":557},{"type":20,"tag":102,"props":2975,"children":2976},{"style":889},[2977],{"type":26,"value":2978}," 8080",{"type":20,"tag":102,"props":2980,"children":2981},{"style":540},[2982],{"type":26,"value":2622},{"type":20,"tag":102,"props":2984,"children":2985},{"class":104,"line":195},[2986,2990,2995,2999,3003,3007,3011,3015,3019,3023],{"type":20,"tag":102,"props":2987,"children":2988},{"style":528},[2989],{"type":26,"value":531},{"type":20,"tag":102,"props":2991,"children":2992},{"style":534},[2993],{"type":26,"value":2994}," \"subnet_ids\"",{"type":20,"tag":102,"props":2996,"children":2997},{"style":540},[2998],{"type":26,"value":2603},{"type":20,"tag":102,"props":3000,"children":3001},{"style":109},[3002],{"type":26,"value":2608},{"type":20,"tag":102,"props":3004,"children":3005},{"style":554},[3006],{"type":26,"value":557},{"type":20,"tag":102,"props":3008,"children":3009},{"style":560},[3010],{"type":26,"value":685},{"type":20,"tag":102,"props":3012,"children":3013},{"style":540},[3014],{"type":26,"value":690},{"type":20,"tag":102,"props":3016,"children":3017},{"style":560},[3018],{"type":26,"value":695},{"type":20,"tag":102,"props":3020,"children":3021},{"style":540},[3022],{"type":26,"value":2076},{"type":20,"tag":102,"props":3024,"children":3025},{"style":540},[3026],{"type":26,"value":2622},{"type":20,"tag":102,"props":3028,"children":3029},{"class":104,"line":204},[3030,3034,3039,3043,3047,3051,3055,3059,3063,3067],{"type":20,"tag":102,"props":3031,"children":3032},{"style":528},[3033],{"type":26,"value":531},{"type":20,"tag":102,"props":3035,"children":3036},{"style":534},[3037],{"type":26,"value":3038}," \"security_group_ids\"",{"type":20,"tag":102,"props":3040,"children":3041},{"style":540},[3042],{"type":26,"value":2603},{"type":20,"tag":102,"props":3044,"children":3045},{"style":109},[3046],{"type":26,"value":2608},{"type":20,"tag":102,"props":3048,"children":3049},{"style":554},[3050],{"type":26,"value":557},{"type":20,"tag":102,"props":3052,"children":3053},{"style":560},[3054],{"type":26,"value":685},{"type":20,"tag":102,"props":3056,"children":3057},{"style":540},[3058],{"type":26,"value":690},{"type":20,"tag":102,"props":3060,"children":3061},{"style":560},[3062],{"type":26,"value":695},{"type":20,"tag":102,"props":3064,"children":3065},{"style":540},[3066],{"type":26,"value":2076},{"type":20,"tag":102,"props":3068,"children":3069},{"style":540},[3070],{"type":26,"value":2622},{"type":20,"tag":102,"props":3072,"children":3073},{"class":104,"line":213},[3074,3078,3083,3087,3091,3095,3099],{"type":20,"tag":102,"props":3075,"children":3076},{"style":528},[3077],{"type":26,"value":531},{"type":20,"tag":102,"props":3079,"children":3080},{"style":534},[3081],{"type":26,"value":3082}," \"target_group_arn\"",{"type":20,"tag":102,"props":3084,"children":3085},{"style":540},[3086],{"type":26,"value":2603},{"type":20,"tag":102,"props":3088,"children":3089},{"style":109},[3090],{"type":26,"value":2608},{"type":20,"tag":102,"props":3092,"children":3093},{"style":554},[3094],{"type":26,"value":557},{"type":20,"tag":102,"props":3096,"children":3097},{"style":560},[3098],{"type":26,"value":2617},{"type":20,"tag":102,"props":3100,"children":3101},{"style":540},[3102],{"type":26,"value":2622},{"type":20,"tag":102,"props":3104,"children":3105},{"class":104,"line":222},[3106],{"type":20,"tag":102,"props":3107,"children":3108},{"emptyLinePlaceholder":146},[3109],{"type":26,"value":149},{"type":20,"tag":102,"props":3111,"children":3112},{"class":104,"line":230},[3113,3117,3122,3127],{"type":20,"tag":102,"props":3114,"children":3115},{"style":528},[3116],{"type":26,"value":1030},{"type":20,"tag":102,"props":3118,"children":3119},{"style":534},[3120],{"type":26,"value":3121}," \"aws_ecs_task_definition\"",{"type":20,"tag":102,"props":3123,"children":3124},{"style":534},[3125],{"type":26,"value":3126}," \"service\"",{"type":20,"tag":102,"props":3128,"children":3129},{"style":540},[3130],{"type":26,"value":543},{"type":20,"tag":102,"props":3132,"children":3133},{"class":104,"line":238},[3134,3139,3144,3148,3152],{"type":20,"tag":102,"props":3135,"children":3136},{"style":109},[3137],{"type":26,"value":3138},"  family",{"type":20,"tag":102,"props":3140,"children":3141},{"style":554},[3142],{"type":26,"value":3143},"                   =",{"type":20,"tag":102,"props":3145,"children":3146},{"style":870},[3147],{"type":26,"value":843},{"type":20,"tag":102,"props":3149,"children":3150},{"style":554},[3151],{"type":26,"value":41},{"type":20,"tag":102,"props":3153,"children":3154},{"style":109},[3155],{"type":26,"value":3156},"service_name\n",{"type":20,"tag":102,"props":3158,"children":3159},{"class":104,"line":247},[3160,3165,3169,3173,3178],{"type":20,"tag":102,"props":3161,"children":3162},{"style":109},[3163],{"type":26,"value":3164},"  network_mode",{"type":20,"tag":102,"props":3166,"children":3167},{"style":554},[3168],{"type":26,"value":1275},{"type":20,"tag":102,"props":3170,"children":3171},{"style":625},[3172],{"type":26,"value":628},{"type":20,"tag":102,"props":3174,"children":3175},{"style":631},[3176],{"type":26,"value":3177},"awsvpc",{"type":20,"tag":102,"props":3179,"children":3180},{"style":625},[3181],{"type":26,"value":639},{"type":20,"tag":102,"props":3183,"children":3184},{"class":104,"line":256},[3185,3190,3194,3198,3202,3207,3211],{"type":20,"tag":102,"props":3186,"children":3187},{"style":109},[3188],{"type":26,"value":3189},"  requires_compatibilities",{"type":20,"tag":102,"props":3191,"children":3192},{"style":554},[3193],{"type":26,"value":557},{"type":20,"tag":102,"props":3195,"children":3196},{"style":540},[3197],{"type":26,"value":716},{"type":20,"tag":102,"props":3199,"children":3200},{"style":625},[3201],{"type":26,"value":721},{"type":20,"tag":102,"props":3203,"children":3204},{"style":631},[3205],{"type":26,"value":3206},"FARGATE",{"type":20,"tag":102,"props":3208,"children":3209},{"style":625},[3210],{"type":26,"value":721},{"type":20,"tag":102,"props":3212,"children":3213},{"style":540},[3214],{"type":26,"value":770},{"type":20,"tag":102,"props":3216,"children":3217},{"class":104,"line":265},[3218,3223,3228,3232,3236],{"type":20,"tag":102,"props":3219,"children":3220},{"style":109},[3221],{"type":26,"value":3222},"  cpu",{"type":20,"tag":102,"props":3224,"children":3225},{"style":554},[3226],{"type":26,"value":3227},"                      =",{"type":20,"tag":102,"props":3229,"children":3230},{"style":870},[3231],{"type":26,"value":843},{"type":20,"tag":102,"props":3233,"children":3234},{"style":554},[3235],{"type":26,"value":41},{"type":20,"tag":102,"props":3237,"children":3238},{"style":109},[3239],{"type":26,"value":3240},"cpu\n",{"type":20,"tag":102,"props":3242,"children":3243},{"class":104,"line":273},[3244,3249,3253,3257,3261],{"type":20,"tag":102,"props":3245,"children":3246},{"style":109},[3247],{"type":26,"value":3248},"  memory",{"type":20,"tag":102,"props":3250,"children":3251},{"style":554},[3252],{"type":26,"value":3143},{"type":20,"tag":102,"props":3254,"children":3255},{"style":870},[3256],{"type":26,"value":843},{"type":20,"tag":102,"props":3258,"children":3259},{"style":554},[3260],{"type":26,"value":41},{"type":20,"tag":102,"props":3262,"children":3263},{"style":109},[3264],{"type":26,"value":3265},"memory\n",{"type":20,"tag":102,"props":3267,"children":3268},{"class":104,"line":281},[3269,3274,3279,3284,3288,3293,3297],{"type":20,"tag":102,"props":3270,"children":3271},{"style":109},[3272],{"type":26,"value":3273},"  execution_role_arn",{"type":20,"tag":102,"props":3275,"children":3276},{"style":554},[3277],{"type":26,"value":3278},"       =",{"type":20,"tag":102,"props":3280,"children":3281},{"style":870},[3282],{"type":26,"value":3283}," aws_iam_role",{"type":20,"tag":102,"props":3285,"children":3286},{"style":554},[3287],{"type":26,"value":41},{"type":20,"tag":102,"props":3289,"children":3290},{"style":109},[3291],{"type":26,"value":3292},"execution",{"type":20,"tag":102,"props":3294,"children":3295},{"style":554},[3296],{"type":26,"value":41},{"type":20,"tag":102,"props":3298,"children":3299},{"style":109},[3300],{"type":26,"value":3301},"arn\n",{"type":20,"tag":102,"props":3303,"children":3304},{"class":104,"line":290},[3305,3310,3314,3318,3322,3327,3331],{"type":20,"tag":102,"props":3306,"children":3307},{"style":109},[3308],{"type":26,"value":3309},"  task_role_arn",{"type":20,"tag":102,"props":3311,"children":3312},{"style":554},[3313],{"type":26,"value":1313},{"type":20,"tag":102,"props":3315,"children":3316},{"style":870},[3317],{"type":26,"value":3283},{"type":20,"tag":102,"props":3319,"children":3320},{"style":554},[3321],{"type":26,"value":41},{"type":20,"tag":102,"props":3323,"children":3324},{"style":109},[3325],{"type":26,"value":3326},"task",{"type":20,"tag":102,"props":3328,"children":3329},{"style":554},[3330],{"type":26,"value":41},{"type":20,"tag":102,"props":3332,"children":3333},{"style":109},[3334],{"type":26,"value":3301},{"type":20,"tag":102,"props":3336,"children":3337},{"class":104,"line":299},[3338],{"type":20,"tag":102,"props":3339,"children":3340},{"emptyLinePlaceholder":146},[3341],{"type":26,"value":149},{"type":20,"tag":102,"props":3343,"children":3344},{"class":104,"line":308},[3345,3350,3354,3359],{"type":20,"tag":102,"props":3346,"children":3347},{"style":109},[3348],{"type":26,"value":3349},"  container_definitions",{"type":20,"tag":102,"props":3351,"children":3352},{"style":554},[3353],{"type":26,"value":557},{"type":20,"tag":102,"props":3355,"children":3356},{"style":860},[3357],{"type":26,"value":3358}," jsonencode",{"type":20,"tag":102,"props":3360,"children":3361},{"style":540},[3362],{"type":26,"value":3363},"([{\n",{"type":20,"tag":102,"props":3365,"children":3366},{"class":104,"line":316},[3367,3372,3376],{"type":20,"tag":102,"props":3368,"children":3369},{"style":109},[3370],{"type":26,"value":3371},"    name",{"type":20,"tag":102,"props":3373,"children":3374},{"style":554},[3375],{"type":26,"value":809},{"type":20,"tag":102,"props":3377,"children":3378},{"style":870},[3379],{"type":26,"value":3380}," var.service_name\n",{"type":20,"tag":102,"props":3382,"children":3383},{"class":104,"line":324},[3384,3389,3393],{"type":20,"tag":102,"props":3385,"children":3386},{"style":109},[3387],{"type":26,"value":3388},"    image",{"type":20,"tag":102,"props":3390,"children":3391},{"style":554},[3392],{"type":26,"value":557},{"type":20,"tag":102,"props":3394,"children":3395},{"style":870},[3396],{"type":26,"value":3397}," var.image\n",{"type":20,"tag":102,"props":3399,"children":3400},{"class":104,"line":333},[3401,3406,3410,3414],{"type":20,"tag":102,"props":3402,"children":3403},{"style":109},[3404],{"type":26,"value":3405},"    portMappings",{"type":20,"tag":102,"props":3407,"children":3408},{"style":554},[3409],{"type":26,"value":557},{"type":20,"tag":102,"props":3411,"children":3412},{"style":870},[3413],{"type":26,"value":716},{"type":20,"tag":102,"props":3415,"children":3416},{"style":540},[3417],{"type":26,"value":3418},"{\n",{"type":20,"tag":102,"props":3420,"children":3421},{"class":104,"line":342},[3422,3427,3431],{"type":20,"tag":102,"props":3423,"children":3424},{"style":109},[3425],{"type":26,"value":3426},"      containerPort",{"type":20,"tag":102,"props":3428,"children":3429},{"style":554},[3430],{"type":26,"value":557},{"type":20,"tag":102,"props":3432,"children":3433},{"style":870},[3434],{"type":26,"value":3435}," var.port\n",{"type":20,"tag":102,"props":3437,"children":3438},{"class":104,"line":350},[3439,3444,3449,3453,3458],{"type":20,"tag":102,"props":3440,"children":3441},{"style":109},[3442],{"type":26,"value":3443},"      protocol",{"type":20,"tag":102,"props":3445,"children":3446},{"style":554},[3447],{"type":26,"value":3448},"      =",{"type":20,"tag":102,"props":3450,"children":3451},{"style":625},[3452],{"type":26,"value":628},{"type":20,"tag":102,"props":3454,"children":3455},{"style":631},[3456],{"type":26,"value":3457},"tcp",{"type":20,"tag":102,"props":3459,"children":3460},{"style":625},[3461],{"type":26,"value":639},{"type":20,"tag":102,"props":3463,"children":3464},{"class":104,"line":358},[3465,3470],{"type":20,"tag":102,"props":3466,"children":3467},{"style":540},[3468],{"type":26,"value":3469},"    }",{"type":20,"tag":102,"props":3471,"children":3472},{"style":870},[3473],{"type":26,"value":770},{"type":20,"tag":102,"props":3475,"children":3476},{"class":104,"line":367},[3477,3482,3486],{"type":20,"tag":102,"props":3478,"children":3479},{"style":109},[3480],{"type":26,"value":3481},"    logConfiguration",{"type":20,"tag":102,"props":3483,"children":3484},{"style":554},[3485],{"type":26,"value":557},{"type":20,"tag":102,"props":3487,"children":3488},{"style":540},[3489],{"type":26,"value":543},{"type":20,"tag":102,"props":3491,"children":3492},{"class":104,"line":376},[3493,3498,3502,3506,3511],{"type":20,"tag":102,"props":3494,"children":3495},{"style":109},[3496],{"type":26,"value":3497},"      logDriver",{"type":20,"tag":102,"props":3499,"children":3500},{"style":554},[3501],{"type":26,"value":557},{"type":20,"tag":102,"props":3503,"children":3504},{"style":625},[3505],{"type":26,"value":628},{"type":20,"tag":102,"props":3507,"children":3508},{"style":631},[3509],{"type":26,"value":3510},"awslogs",{"type":20,"tag":102,"props":3512,"children":3513},{"style":625},[3514],{"type":26,"value":639},{"type":20,"tag":102,"props":3516,"children":3517},{"class":104,"line":385},[3518,3523,3527],{"type":20,"tag":102,"props":3519,"children":3520},{"style":109},[3521],{"type":26,"value":3522},"      options",{"type":20,"tag":102,"props":3524,"children":3525},{"style":554},[3526],{"type":26,"value":557},{"type":20,"tag":102,"props":3528,"children":3529},{"style":540},[3530],{"type":26,"value":543},{"type":20,"tag":102,"props":3532,"children":3533},{"class":104,"line":394},[3534,3539,3544,3548,3552],{"type":20,"tag":102,"props":3535,"children":3536},{"style":625},[3537],{"type":26,"value":3538},"        \"",{"type":20,"tag":102,"props":3540,"children":3541},{"style":631},[3542],{"type":26,"value":3543},"awslogs-group",{"type":20,"tag":102,"props":3545,"children":3546},{"style":625},[3547],{"type":26,"value":721},{"type":20,"tag":102,"props":3549,"children":3550},{"style":554},[3551],{"type":26,"value":2161},{"type":20,"tag":102,"props":3553,"children":3554},{"style":870},[3555],{"type":26,"value":3556}," aws_cloudwatch_log_group.service.name\n",{"type":20,"tag":102,"props":3558,"children":3559},{"class":104,"line":403},[3560,3564,3569,3573,3577],{"type":20,"tag":102,"props":3561,"children":3562},{"style":625},[3563],{"type":26,"value":3538},{"type":20,"tag":102,"props":3565,"children":3566},{"style":631},[3567],{"type":26,"value":3568},"awslogs-region",{"type":20,"tag":102,"props":3570,"children":3571},{"style":625},[3572],{"type":26,"value":721},{"type":20,"tag":102,"props":3574,"children":3575},{"style":554},[3576],{"type":26,"value":1141},{"type":20,"tag":102,"props":3578,"children":3579},{"style":870},[3580],{"type":26,"value":3581}," data.aws_region.current.name\n",{"type":20,"tag":102,"props":3583,"children":3584},{"class":104,"line":412},[3585,3589,3594,3598,3602,3606,3611],{"type":20,"tag":102,"props":3586,"children":3587},{"style":625},[3588],{"type":26,"value":3538},{"type":20,"tag":102,"props":3590,"children":3591},{"style":631},[3592],{"type":26,"value":3593},"awslogs-stream-prefix",{"type":20,"tag":102,"props":3595,"children":3596},{"style":625},[3597],{"type":26,"value":721},{"type":20,"tag":102,"props":3599,"children":3600},{"style":554},[3601],{"type":26,"value":557},{"type":20,"tag":102,"props":3603,"children":3604},{"style":625},[3605],{"type":26,"value":628},{"type":20,"tag":102,"props":3607,"children":3608},{"style":631},[3609],{"type":26,"value":3610},"ecs",{"type":20,"tag":102,"props":3612,"children":3613},{"style":625},[3614],{"type":26,"value":639},{"type":20,"tag":102,"props":3616,"children":3617},{"class":104,"line":421},[3618],{"type":20,"tag":102,"props":3619,"children":3620},{"style":540},[3621],{"type":26,"value":3622},"      }\n",{"type":20,"tag":102,"props":3624,"children":3625},{"class":104,"line":430},[3626],{"type":20,"tag":102,"props":3627,"children":3628},{"style":540},[3629],{"type":26,"value":3630},"    }\n",{"type":20,"tag":102,"props":3632,"children":3633},{"class":104,"line":439},[3634,3639,3643],{"type":20,"tag":102,"props":3635,"children":3636},{"style":109},[3637],{"type":26,"value":3638},"    environment",{"type":20,"tag":102,"props":3640,"children":3641},{"style":554},[3642],{"type":26,"value":557},{"type":20,"tag":102,"props":3644,"children":3645},{"style":870},[3646],{"type":26,"value":3647}," [\n",{"type":20,"tag":102,"props":3649,"children":3650},{"class":104,"line":448},[3651,3656,3661,3665,3669,3674,3678,3682,3687,3691,3695,3700,3704,3709],{"type":20,"tag":102,"props":3652,"children":3653},{"style":540},[3654],{"type":26,"value":3655},"      {",{"type":20,"tag":102,"props":3657,"children":3658},{"style":109},[3659],{"type":26,"value":3660}," name",{"type":20,"tag":102,"props":3662,"children":3663},{"style":554},[3664],{"type":26,"value":557},{"type":20,"tag":102,"props":3666,"children":3667},{"style":625},[3668],{"type":26,"value":628},{"type":20,"tag":102,"props":3670,"children":3671},{"style":631},[3672],{"type":26,"value":3673},"OTEL_EXPORTER_OTLP_ENDPOINT",{"type":20,"tag":102,"props":3675,"children":3676},{"style":625},[3677],{"type":26,"value":721},{"type":20,"tag":102,"props":3679,"children":3680},{"style":870},[3681],{"type":26,"value":2720},{"type":20,"tag":102,"props":3683,"children":3684},{"style":109},[3685],{"type":26,"value":3686},"value",{"type":20,"tag":102,"props":3688,"children":3689},{"style":554},[3690],{"type":26,"value":557},{"type":20,"tag":102,"props":3692,"children":3693},{"style":625},[3694],{"type":26,"value":628},{"type":20,"tag":102,"props":3696,"children":3697},{"style":631},[3698],{"type":26,"value":3699},"http://otel-collector:4317",{"type":20,"tag":102,"props":3701,"children":3702},{"style":625},[3703],{"type":26,"value":721},{"type":20,"tag":102,"props":3705,"children":3706},{"style":540},[3707],{"type":26,"value":3708}," }",{"type":20,"tag":102,"props":3710,"children":3711},{"style":870},[3712],{"type":26,"value":3713},",\n",{"type":20,"tag":102,"props":3715,"children":3716},{"class":104,"line":457},[3717,3721,3725,3729,3733,3738,3742,3746,3750,3754,3759,3763],{"type":20,"tag":102,"props":3718,"children":3719},{"style":540},[3720],{"type":26,"value":3655},{"type":20,"tag":102,"props":3722,"children":3723},{"style":109},[3724],{"type":26,"value":3660},{"type":20,"tag":102,"props":3726,"children":3727},{"style":554},[3728],{"type":26,"value":557},{"type":20,"tag":102,"props":3730,"children":3731},{"style":625},[3732],{"type":26,"value":628},{"type":20,"tag":102,"props":3734,"children":3735},{"style":631},[3736],{"type":26,"value":3737},"OTEL_SERVICE_NAME",{"type":20,"tag":102,"props":3739,"children":3740},{"style":625},[3741],{"type":26,"value":721},{"type":20,"tag":102,"props":3743,"children":3744},{"style":870},[3745],{"type":26,"value":2720},{"type":20,"tag":102,"props":3747,"children":3748},{"style":109},[3749],{"type":26,"value":3686},{"type":20,"tag":102,"props":3751,"children":3752},{"style":554},[3753],{"type":26,"value":557},{"type":20,"tag":102,"props":3755,"children":3756},{"style":870},[3757],{"type":26,"value":3758}," var.service_name ",{"type":20,"tag":102,"props":3760,"children":3761},{"style":540},[3762],{"type":26,"value":1169},{"type":20,"tag":102,"props":3764,"children":3765},{"style":870},[3766],{"type":26,"value":3713},{"type":20,"tag":102,"props":3768,"children":3769},{"class":104,"line":466},[3770],{"type":20,"tag":102,"props":3771,"children":3772},{"style":870},[3773],{"type":26,"value":3774},"    ]\n",{"type":20,"tag":102,"props":3776,"children":3777},{"class":104,"line":474},[3778],{"type":20,"tag":102,"props":3779,"children":3780},{"style":540},[3781],{"type":26,"value":3782},"  }])\n",{"type":20,"tag":102,"props":3784,"children":3785},{"class":104,"line":483},[3786],{"type":20,"tag":102,"props":3787,"children":3788},{"style":540},[3789],{"type":26,"value":571},{"type":20,"tag":102,"props":3791,"children":3792},{"class":104,"line":492},[3793],{"type":20,"tag":102,"props":3794,"children":3795},{"emptyLinePlaceholder":146},[3796],{"type":26,"value":149},{"type":20,"tag":102,"props":3798,"children":3799},{"class":104,"line":1608},[3800,3804,3809,3813],{"type":20,"tag":102,"props":3801,"children":3802},{"style":528},[3803],{"type":26,"value":1030},{"type":20,"tag":102,"props":3805,"children":3806},{"style":534},[3807],{"type":26,"value":3808}," \"aws_ecs_service\"",{"type":20,"tag":102,"props":3810,"children":3811},{"style":534},[3812],{"type":26,"value":3126},{"type":20,"tag":102,"props":3814,"children":3815},{"style":540},[3816],{"type":26,"value":543},{"type":20,"tag":102,"props":3818,"children":3819},{"class":104,"line":1616},[3820,3825,3829,3833,3837],{"type":20,"tag":102,"props":3821,"children":3822},{"style":109},[3823],{"type":26,"value":3824},"  name",{"type":20,"tag":102,"props":3826,"children":3827},{"style":554},[3828],{"type":26,"value":1313},{"type":20,"tag":102,"props":3830,"children":3831},{"style":870},[3832],{"type":26,"value":843},{"type":20,"tag":102,"props":3834,"children":3835},{"style":554},[3836],{"type":26,"value":41},{"type":20,"tag":102,"props":3838,"children":3839},{"style":109},[3840],{"type":26,"value":3156},{"type":20,"tag":102,"props":3842,"children":3843},{"class":104,"line":1624},[3844,3849,3853,3857,3861],{"type":20,"tag":102,"props":3845,"children":3846},{"style":109},[3847],{"type":26,"value":3848},"  cluster",{"type":20,"tag":102,"props":3850,"children":3851},{"style":554},[3852],{"type":26,"value":2161},{"type":20,"tag":102,"props":3854,"children":3855},{"style":870},[3856],{"type":26,"value":843},{"type":20,"tag":102,"props":3858,"children":3859},{"style":554},[3860],{"type":26,"value":41},{"type":20,"tag":102,"props":3862,"children":3863},{"style":109},[3864],{"type":26,"value":3865},"cluster_id\n",{"type":20,"tag":102,"props":3867,"children":3868},{"class":104,"line":1645},[3869,3874,3878,3883,3887,3892,3896],{"type":20,"tag":102,"props":3870,"children":3871},{"style":109},[3872],{"type":26,"value":3873},"  task_definition",{"type":20,"tag":102,"props":3875,"children":3876},{"style":554},[3877],{"type":26,"value":557},{"type":20,"tag":102,"props":3879,"children":3880},{"style":870},[3881],{"type":26,"value":3882}," aws_ecs_task_definition",{"type":20,"tag":102,"props":3884,"children":3885},{"style":554},[3886],{"type":26,"value":41},{"type":20,"tag":102,"props":3888,"children":3889},{"style":109},[3890],{"type":26,"value":3891},"service",{"type":20,"tag":102,"props":3893,"children":3894},{"style":554},[3895],{"type":26,"value":41},{"type":20,"tag":102,"props":3897,"children":3898},{"style":109},[3899],{"type":26,"value":3301},{"type":20,"tag":102,"props":3901,"children":3902},{"class":104,"line":1681},[3903,3908,3912,3916,3920],{"type":20,"tag":102,"props":3904,"children":3905},{"style":109},[3906],{"type":26,"value":3907},"  desired_count",{"type":20,"tag":102,"props":3909,"children":3910},{"style":554},[3911],{"type":26,"value":1101},{"type":20,"tag":102,"props":3913,"children":3914},{"style":870},[3915],{"type":26,"value":843},{"type":20,"tag":102,"props":3917,"children":3918},{"style":554},[3919],{"type":26,"value":41},{"type":20,"tag":102,"props":3921,"children":3922},{"style":109},[3923],{"type":26,"value":3924},"desired_count\n",{"type":20,"tag":102,"props":3926,"children":3927},{"class":104,"line":1713},[3928,3933,3937,3941,3945],{"type":20,"tag":102,"props":3929,"children":3930},{"style":109},[3931],{"type":26,"value":3932},"  launch_type",{"type":20,"tag":102,"props":3934,"children":3935},{"style":554},[3936],{"type":26,"value":2294},{"type":20,"tag":102,"props":3938,"children":3939},{"style":625},[3940],{"type":26,"value":628},{"type":20,"tag":102,"props":3942,"children":3943},{"style":631},[3944],{"type":26,"value":3206},{"type":20,"tag":102,"props":3946,"children":3947},{"style":625},[3948],{"type":26,"value":639},{"type":20,"tag":102,"props":3950,"children":3951},{"class":104,"line":1758},[3952],{"type":20,"tag":102,"props":3953,"children":3954},{"emptyLinePlaceholder":146},[3955],{"type":26,"value":149},{"type":20,"tag":102,"props":3957,"children":3958},{"class":104,"line":1802},[3959,3964],{"type":20,"tag":102,"props":3960,"children":3961},{"style":528},[3962],{"type":26,"value":3963},"  network_configuration",{"type":20,"tag":102,"props":3965,"children":3966},{"style":540},[3967],{"type":26,"value":543},{"type":20,"tag":102,"props":3969,"children":3970},{"class":104,"line":1810},[3971,3976,3980,3984,3988],{"type":20,"tag":102,"props":3972,"children":3973},{"style":109},[3974],{"type":26,"value":3975},"    subnets",{"type":20,"tag":102,"props":3977,"children":3978},{"style":554},[3979],{"type":26,"value":2161},{"type":20,"tag":102,"props":3981,"children":3982},{"style":870},[3983],{"type":26,"value":843},{"type":20,"tag":102,"props":3985,"children":3986},{"style":554},[3987],{"type":26,"value":41},{"type":20,"tag":102,"props":3989,"children":3990},{"style":109},[3991],{"type":26,"value":3992},"subnet_ids\n",{"type":20,"tag":102,"props":3994,"children":3995},{"class":104,"line":1826},[3996,4001,4005,4009,4013],{"type":20,"tag":102,"props":3997,"children":3998},{"style":109},[3999],{"type":26,"value":4000},"    security_groups",{"type":20,"tag":102,"props":4002,"children":4003},{"style":554},[4004],{"type":26,"value":557},{"type":20,"tag":102,"props":4006,"children":4007},{"style":870},[4008],{"type":26,"value":843},{"type":20,"tag":102,"props":4010,"children":4011},{"style":554},[4012],{"type":26,"value":41},{"type":20,"tag":102,"props":4014,"children":4015},{"style":109},[4016],{"type":26,"value":4017},"security_group_ids\n",{"type":20,"tag":102,"props":4019,"children":4020},{"class":104,"line":1911},[4021],{"type":20,"tag":102,"props":4022,"children":4023},{"style":540},[4024],{"type":26,"value":1227},{"type":20,"tag":102,"props":4026,"children":4027},{"class":104,"line":1927},[4028],{"type":20,"tag":102,"props":4029,"children":4030},{"emptyLinePlaceholder":146},[4031],{"type":26,"value":149},{"type":20,"tag":102,"props":4033,"children":4034},{"class":104,"line":1952},[4035,4040],{"type":20,"tag":102,"props":4036,"children":4037},{"style":528},[4038],{"type":26,"value":4039},"  load_balancer",{"type":20,"tag":102,"props":4041,"children":4042},{"style":540},[4043],{"type":26,"value":543},{"type":20,"tag":102,"props":4045,"children":4046},{"class":104,"line":1960},[4047,4052,4056,4060,4064],{"type":20,"tag":102,"props":4048,"children":4049},{"style":109},[4050],{"type":26,"value":4051},"    target_group_arn",{"type":20,"tag":102,"props":4053,"children":4054},{"style":554},[4055],{"type":26,"value":557},{"type":20,"tag":102,"props":4057,"children":4058},{"style":870},[4059],{"type":26,"value":843},{"type":20,"tag":102,"props":4061,"children":4062},{"style":554},[4063],{"type":26,"value":41},{"type":20,"tag":102,"props":4065,"children":4066},{"style":109},[4067],{"type":26,"value":4068},"target_group_arn\n",{"type":20,"tag":102,"props":4070,"children":4071},{"class":104,"line":1968},[4072,4077,4081,4085,4089],{"type":20,"tag":102,"props":4073,"children":4074},{"style":109},[4075],{"type":26,"value":4076},"    container_name",{"type":20,"tag":102,"props":4078,"children":4079},{"style":554},[4080],{"type":26,"value":1101},{"type":20,"tag":102,"props":4082,"children":4083},{"style":870},[4084],{"type":26,"value":843},{"type":20,"tag":102,"props":4086,"children":4087},{"style":554},[4088],{"type":26,"value":41},{"type":20,"tag":102,"props":4090,"children":4091},{"style":109},[4092],{"type":26,"value":3156},{"type":20,"tag":102,"props":4094,"children":4095},{"class":104,"line":1976},[4096,4101,4105,4109,4113],{"type":20,"tag":102,"props":4097,"children":4098},{"style":109},[4099],{"type":26,"value":4100},"    container_port",{"type":20,"tag":102,"props":4102,"children":4103},{"style":554},[4104],{"type":26,"value":1101},{"type":20,"tag":102,"props":4106,"children":4107},{"style":870},[4108],{"type":26,"value":843},{"type":20,"tag":102,"props":4110,"children":4111},{"style":554},[4112],{"type":26,"value":41},{"type":20,"tag":102,"props":4114,"children":4115},{"style":109},[4116],{"type":26,"value":4117},"port\n",{"type":20,"tag":102,"props":4119,"children":4120},{"class":104,"line":1985},[4121],{"type":20,"tag":102,"props":4122,"children":4123},{"style":540},[4124],{"type":26,"value":1227},{"type":20,"tag":102,"props":4126,"children":4127},{"class":104,"line":2007},[4128],{"type":20,"tag":102,"props":4129,"children":4130},{"emptyLinePlaceholder":146},[4131],{"type":26,"value":149},{"type":20,"tag":102,"props":4133,"children":4134},{"class":104,"line":2088},[4135,4140],{"type":20,"tag":102,"props":4136,"children":4137},{"style":528},[4138],{"type":26,"value":4139},"  deployment_circuit_breaker",{"type":20,"tag":102,"props":4141,"children":4142},{"style":540},[4143],{"type":26,"value":543},{"type":20,"tag":102,"props":4145,"children":4146},{"class":104,"line":2114},[4147,4152,4156],{"type":20,"tag":102,"props":4148,"children":4149},{"style":109},[4150],{"type":26,"value":4151},"    enable",{"type":20,"tag":102,"props":4153,"children":4154},{"style":554},[4155],{"type":26,"value":1101},{"type":20,"tag":102,"props":4157,"children":4158},{"style":1085},[4159],{"type":26,"value":1088},{"type":20,"tag":102,"props":4161,"children":4162},{"class":104,"line":2122},[4163,4168,4172],{"type":20,"tag":102,"props":4164,"children":4165},{"style":109},[4166],{"type":26,"value":4167},"    rollback",{"type":20,"tag":102,"props":4169,"children":4170},{"style":554},[4171],{"type":26,"value":557},{"type":20,"tag":102,"props":4173,"children":4174},{"style":1085},[4175],{"type":26,"value":1088},{"type":20,"tag":102,"props":4177,"children":4178},{"class":104,"line":2130},[4179],{"type":20,"tag":102,"props":4180,"children":4181},{"style":540},[4182],{"type":26,"value":1227},{"type":20,"tag":102,"props":4184,"children":4185},{"class":104,"line":2151},[4186],{"type":20,"tag":102,"props":4187,"children":4188},{"emptyLinePlaceholder":146},[4189],{"type":26,"value":149},{"type":20,"tag":102,"props":4191,"children":4192},{"class":104,"line":2228},[4193,4198],{"type":20,"tag":102,"props":4194,"children":4195},{"style":528},[4196],{"type":26,"value":4197},"  lifecycle",{"type":20,"tag":102,"props":4199,"children":4200},{"style":540},[4201],{"type":26,"value":543},{"type":20,"tag":102,"props":4203,"children":4204},{"class":104,"line":2283},[4205,4210,4214,4218,4223],{"type":20,"tag":102,"props":4206,"children":4207},{"style":109},[4208],{"type":26,"value":4209},"    ignore_changes",{"type":20,"tag":102,"props":4211,"children":4212},{"style":554},[4213],{"type":26,"value":557},{"type":20,"tag":102,"props":4215,"children":4216},{"style":540},[4217],{"type":26,"value":716},{"type":20,"tag":102,"props":4219,"children":4220},{"style":109},[4221],{"type":26,"value":4222},"desired_count",{"type":20,"tag":102,"props":4224,"children":4225},{"style":540},[4226],{"type":26,"value":770},{"type":20,"tag":102,"props":4228,"children":4229},{"class":104,"line":2338},[4230],{"type":20,"tag":102,"props":4231,"children":4232},{"style":540},[4233],{"type":26,"value":1227},{"type":20,"tag":102,"props":4235,"children":4236},{"class":104,"line":2346},[4237],{"type":20,"tag":102,"props":4238,"children":4239},{"style":540},[4240],{"type":26,"value":571},{"type":20,"tag":102,"props":4242,"children":4243},{"class":104,"line":2354},[4244],{"type":20,"tag":102,"props":4245,"children":4246},{"emptyLinePlaceholder":146},[4247],{"type":26,"value":149},{"type":20,"tag":102,"props":4249,"children":4250},{"class":104,"line":2372},[4251],{"type":20,"tag":102,"props":4252,"children":4253},{"style":519},[4254],{"type":26,"value":4255},"# Autoscaling\n",{"type":20,"tag":102,"props":4257,"children":4258},{"class":104,"line":2405},[4259,4263,4268,4272],{"type":20,"tag":102,"props":4260,"children":4261},{"style":528},[4262],{"type":26,"value":1030},{"type":20,"tag":102,"props":4264,"children":4265},{"style":534},[4266],{"type":26,"value":4267}," \"aws_appautoscaling_target\"",{"type":20,"tag":102,"props":4269,"children":4270},{"style":534},[4271],{"type":26,"value":3126},{"type":20,"tag":102,"props":4273,"children":4274},{"style":540},[4275],{"type":26,"value":543},{"type":20,"tag":102,"props":4277,"children":4278},{"class":104,"line":2413},[4279,4284,4288,4292,4296],{"type":20,"tag":102,"props":4280,"children":4281},{"style":109},[4282],{"type":26,"value":4283},"  max_capacity",{"type":20,"tag":102,"props":4285,"children":4286},{"style":554},[4287],{"type":26,"value":3278},{"type":20,"tag":102,"props":4289,"children":4290},{"style":870},[4291],{"type":26,"value":843},{"type":20,"tag":102,"props":4293,"children":4294},{"style":554},[4295],{"type":26,"value":41},{"type":20,"tag":102,"props":4297,"children":4298},{"style":109},[4299],{"type":26,"value":4300},"max_count\n",{"type":20,"tag":102,"props":4302,"children":4303},{"class":104,"line":2421},[4304,4309,4313,4317,4321],{"type":20,"tag":102,"props":4305,"children":4306},{"style":109},[4307],{"type":26,"value":4308},"  min_capacity",{"type":20,"tag":102,"props":4310,"children":4311},{"style":554},[4312],{"type":26,"value":3278},{"type":20,"tag":102,"props":4314,"children":4315},{"style":870},[4316],{"type":26,"value":843},{"type":20,"tag":102,"props":4318,"children":4319},{"style":554},[4320],{"type":26,"value":41},{"type":20,"tag":102,"props":4322,"children":4323},{"style":109},[4324],{"type":26,"value":4325},"min_count\n",{"type":20,"tag":102,"props":4327,"children":4328},{"class":104,"line":2438},[4329,4334,4338,4342,4347,4351,4356,4361,4366,4371,4375,4379,4384,4389,4394,4398,4402,4406,4410,4415,4419,4423,4427,4432,4436],{"type":20,"tag":102,"props":4330,"children":4331},{"style":109},[4332],{"type":26,"value":4333},"  resource_id",{"type":20,"tag":102,"props":4335,"children":4336},{"style":554},[4337],{"type":26,"value":1141},{"type":20,"tag":102,"props":4339,"children":4340},{"style":625},[4341],{"type":26,"value":628},{"type":20,"tag":102,"props":4343,"children":4344},{"style":631},[4345],{"type":26,"value":4346},"service/",{"type":20,"tag":102,"props":4348,"children":4349},{"style":1148},[4350],{"type":26,"value":1151},{"type":20,"tag":102,"props":4352,"children":4353},{"style":860},[4354],{"type":26,"value":4355},"split",{"type":20,"tag":102,"props":4357,"children":4358},{"style":625},[4359],{"type":26,"value":4360},"(\"",{"type":20,"tag":102,"props":4362,"children":4363},{"style":631},[4364],{"type":26,"value":4365},"/",{"type":20,"tag":102,"props":4367,"children":4368},{"style":625},[4369],{"type":26,"value":4370},"\",",{"type":20,"tag":102,"props":4372,"children":4373},{"style":631},[4374],{"type":26,"value":843},{"type":20,"tag":102,"props":4376,"children":4377},{"style":554},[4378],{"type":26,"value":41},{"type":20,"tag":102,"props":4380,"children":4381},{"style":109},[4382],{"type":26,"value":4383},"cluster_id",{"type":20,"tag":102,"props":4385,"children":4386},{"style":625},[4387],{"type":26,"value":4388},")[",{"type":20,"tag":102,"props":4390,"children":4391},{"style":889},[4392],{"type":26,"value":4393},"1",{"type":20,"tag":102,"props":4395,"children":4396},{"style":625},[4397],{"type":26,"value":1550},{"type":20,"tag":102,"props":4399,"children":4400},{"style":1148},[4401],{"type":26,"value":1169},{"type":20,"tag":102,"props":4403,"children":4404},{"style":631},[4405],{"type":26,"value":4365},{"type":20,"tag":102,"props":4407,"children":4408},{"style":1148},[4409],{"type":26,"value":1151},{"type":20,"tag":102,"props":4411,"children":4412},{"style":109},[4413],{"type":26,"value":4414},"aws_ecs_service",{"type":20,"tag":102,"props":4416,"children":4417},{"style":554},[4418],{"type":26,"value":41},{"type":20,"tag":102,"props":4420,"children":4421},{"style":109},[4422],{"type":26,"value":3891},{"type":20,"tag":102,"props":4424,"children":4425},{"style":554},[4426],{"type":26,"value":41},{"type":20,"tag":102,"props":4428,"children":4429},{"style":109},[4430],{"type":26,"value":4431},"name",{"type":20,"tag":102,"props":4433,"children":4434},{"style":1148},[4435],{"type":26,"value":1169},{"type":20,"tag":102,"props":4437,"children":4438},{"style":625},[4439],{"type":26,"value":639},{"type":20,"tag":102,"props":4441,"children":4442},{"class":104,"line":2483},[4443,4448,4452,4456,4461],{"type":20,"tag":102,"props":4444,"children":4445},{"style":109},[4446],{"type":26,"value":4447},"  scalable_dimension",{"type":20,"tag":102,"props":4449,"children":4450},{"style":554},[4451],{"type":26,"value":557},{"type":20,"tag":102,"props":4453,"children":4454},{"style":625},[4455],{"type":26,"value":628},{"type":20,"tag":102,"props":4457,"children":4458},{"style":631},[4459],{"type":26,"value":4460},"ecs:service:DesiredCount",{"type":20,"tag":102,"props":4462,"children":4463},{"style":625},[4464],{"type":26,"value":639},{"type":20,"tag":102,"props":4466,"children":4467},{"class":104,"line":2491},[4468,4473,4477,4481,4485],{"type":20,"tag":102,"props":4469,"children":4470},{"style":109},[4471],{"type":26,"value":4472},"  service_namespace",{"type":20,"tag":102,"props":4474,"children":4475},{"style":554},[4476],{"type":26,"value":809},{"type":20,"tag":102,"props":4478,"children":4479},{"style":625},[4480],{"type":26,"value":628},{"type":20,"tag":102,"props":4482,"children":4483},{"style":631},[4484],{"type":26,"value":3610},{"type":20,"tag":102,"props":4486,"children":4487},{"style":625},[4488],{"type":26,"value":639},{"type":20,"tag":102,"props":4490,"children":4491},{"class":104,"line":2499},[4492],{"type":20,"tag":102,"props":4493,"children":4494},{"style":540},[4495],{"type":26,"value":571},{"type":20,"tag":102,"props":4497,"children":4498},{"class":104,"line":2516},[4499],{"type":20,"tag":102,"props":4500,"children":4501},{"emptyLinePlaceholder":146},[4502],{"type":26,"value":149},{"type":20,"tag":102,"props":4504,"children":4505},{"class":104,"line":2560},[4506,4510,4515,4519],{"type":20,"tag":102,"props":4507,"children":4508},{"style":528},[4509],{"type":26,"value":1030},{"type":20,"tag":102,"props":4511,"children":4512},{"style":534},[4513],{"type":26,"value":4514}," \"aws_appautoscaling_policy\"",{"type":20,"tag":102,"props":4516,"children":4517},{"style":534},[4518],{"type":26,"value":2698},{"type":20,"tag":102,"props":4520,"children":4521},{"style":540},[4522],{"type":26,"value":543},{"type":20,"tag":102,"props":4524,"children":4526},{"class":104,"line":4525},84,[4527,4531,4536,4540,4544,4548,4552,4557,4561,4566],{"type":20,"tag":102,"props":4528,"children":4529},{"style":109},[4530],{"type":26,"value":3824},{"type":20,"tag":102,"props":4532,"children":4533},{"style":554},[4534],{"type":26,"value":4535},"               =",{"type":20,"tag":102,"props":4537,"children":4538},{"style":625},[4539],{"type":26,"value":628},{"type":20,"tag":102,"props":4541,"children":4542},{"style":1148},[4543],{"type":26,"value":1151},{"type":20,"tag":102,"props":4545,"children":4546},{"style":109},[4547],{"type":26,"value":873},{"type":20,"tag":102,"props":4549,"children":4550},{"style":554},[4551],{"type":26,"value":41},{"type":20,"tag":102,"props":4553,"children":4554},{"style":109},[4555],{"type":26,"value":4556},"service_name",{"type":20,"tag":102,"props":4558,"children":4559},{"style":1148},[4560],{"type":26,"value":1169},{"type":20,"tag":102,"props":4562,"children":4563},{"style":631},[4564],{"type":26,"value":4565},"-cpu",{"type":20,"tag":102,"props":4567,"children":4568},{"style":625},[4569],{"type":26,"value":639},{"type":20,"tag":102,"props":4571,"children":4573},{"class":104,"line":4572},85,[4574,4579,4583,4587,4592],{"type":20,"tag":102,"props":4575,"children":4576},{"style":109},[4577],{"type":26,"value":4578},"  policy_type",{"type":20,"tag":102,"props":4580,"children":4581},{"style":554},[4582],{"type":26,"value":1141},{"type":20,"tag":102,"props":4584,"children":4585},{"style":625},[4586],{"type":26,"value":628},{"type":20,"tag":102,"props":4588,"children":4589},{"style":631},[4590],{"type":26,"value":4591},"TargetTrackingScaling",{"type":20,"tag":102,"props":4593,"children":4594},{"style":625},[4595],{"type":26,"value":639},{"type":20,"tag":102,"props":4597,"children":4599},{"class":104,"line":4598},86,[4600,4604,4608,4613,4617,4621,4625],{"type":20,"tag":102,"props":4601,"children":4602},{"style":109},[4603],{"type":26,"value":4333},{"type":20,"tag":102,"props":4605,"children":4606},{"style":554},[4607],{"type":26,"value":1141},{"type":20,"tag":102,"props":4609,"children":4610},{"style":870},[4611],{"type":26,"value":4612}," aws_appautoscaling_target",{"type":20,"tag":102,"props":4614,"children":4615},{"style":554},[4616],{"type":26,"value":41},{"type":20,"tag":102,"props":4618,"children":4619},{"style":109},[4620],{"type":26,"value":3891},{"type":20,"tag":102,"props":4622,"children":4623},{"style":554},[4624],{"type":26,"value":41},{"type":20,"tag":102,"props":4626,"children":4627},{"style":109},[4628],{"type":26,"value":4629},"resource_id\n",{"type":20,"tag":102,"props":4631,"children":4633},{"class":104,"line":4632},87,[4634,4638,4642,4646,4650,4654,4658],{"type":20,"tag":102,"props":4635,"children":4636},{"style":109},[4637],{"type":26,"value":4447},{"type":20,"tag":102,"props":4639,"children":4640},{"style":554},[4641],{"type":26,"value":557},{"type":20,"tag":102,"props":4643,"children":4644},{"style":870},[4645],{"type":26,"value":4612},{"type":20,"tag":102,"props":4647,"children":4648},{"style":554},[4649],{"type":26,"value":41},{"type":20,"tag":102,"props":4651,"children":4652},{"style":109},[4653],{"type":26,"value":3891},{"type":20,"tag":102,"props":4655,"children":4656},{"style":554},[4657],{"type":26,"value":41},{"type":20,"tag":102,"props":4659,"children":4660},{"style":109},[4661],{"type":26,"value":4662},"scalable_dimension\n",{"type":20,"tag":102,"props":4664,"children":4666},{"class":104,"line":4665},88,[4667,4671,4675,4679,4683,4687,4691],{"type":20,"tag":102,"props":4668,"children":4669},{"style":109},[4670],{"type":26,"value":4472},{"type":20,"tag":102,"props":4672,"children":4673},{"style":554},[4674],{"type":26,"value":809},{"type":20,"tag":102,"props":4676,"children":4677},{"style":870},[4678],{"type":26,"value":4612},{"type":20,"tag":102,"props":4680,"children":4681},{"style":554},[4682],{"type":26,"value":41},{"type":20,"tag":102,"props":4684,"children":4685},{"style":109},[4686],{"type":26,"value":3891},{"type":20,"tag":102,"props":4688,"children":4689},{"style":554},[4690],{"type":26,"value":41},{"type":20,"tag":102,"props":4692,"children":4693},{"style":109},[4694],{"type":26,"value":4695},"service_namespace\n",{"type":20,"tag":102,"props":4697,"children":4699},{"class":104,"line":4698},89,[4700],{"type":20,"tag":102,"props":4701,"children":4702},{"emptyLinePlaceholder":146},[4703],{"type":26,"value":149},{"type":20,"tag":102,"props":4705,"children":4707},{"class":104,"line":4706},90,[4708,4713],{"type":20,"tag":102,"props":4709,"children":4710},{"style":528},[4711],{"type":26,"value":4712},"  target_tracking_scaling_policy_configuration",{"type":20,"tag":102,"props":4714,"children":4715},{"style":540},[4716],{"type":26,"value":543},{"type":20,"tag":102,"props":4718,"children":4720},{"class":104,"line":4719},91,[4721,4726,4730,4735,4739],{"type":20,"tag":102,"props":4722,"children":4723},{"style":109},[4724],{"type":26,"value":4725},"    target_value",{"type":20,"tag":102,"props":4727,"children":4728},{"style":554},[4729],{"type":26,"value":3278},{"type":20,"tag":102,"props":4731,"children":4732},{"style":889},[4733],{"type":26,"value":4734}," 60",{"type":20,"tag":102,"props":4736,"children":4737},{"style":1085},[4738],{"type":26,"value":41},{"type":20,"tag":102,"props":4740,"children":4741},{"style":889},[4742],{"type":26,"value":4743},"0\n",{"type":20,"tag":102,"props":4745,"children":4747},{"class":104,"line":4746},92,[4748,4753,4757],{"type":20,"tag":102,"props":4749,"children":4750},{"style":109},[4751],{"type":26,"value":4752},"    scale_in_cooldown",{"type":20,"tag":102,"props":4754,"children":4755},{"style":554},[4756],{"type":26,"value":809},{"type":20,"tag":102,"props":4758,"children":4759},{"style":889},[4760],{"type":26,"value":4761}," 300\n",{"type":20,"tag":102,"props":4763,"children":4765},{"class":104,"line":4764},93,[4766,4771,4775],{"type":20,"tag":102,"props":4767,"children":4768},{"style":109},[4769],{"type":26,"value":4770},"    scale_out_cooldown",{"type":20,"tag":102,"props":4772,"children":4773},{"style":554},[4774],{"type":26,"value":557},{"type":20,"tag":102,"props":4776,"children":4777},{"style":889},[4778],{"type":26,"value":4779}," 60\n",{"type":20,"tag":102,"props":4781,"children":4783},{"class":104,"line":4782},94,[4784,4789],{"type":20,"tag":102,"props":4785,"children":4786},{"style":528},[4787],{"type":26,"value":4788},"    predefined_metric_specification",{"type":20,"tag":102,"props":4790,"children":4791},{"style":540},[4792],{"type":26,"value":543},{"type":20,"tag":102,"props":4794,"children":4796},{"class":104,"line":4795},95,[4797,4802,4806,4810,4815],{"type":20,"tag":102,"props":4798,"children":4799},{"style":109},[4800],{"type":26,"value":4801},"      predefined_metric_type",{"type":20,"tag":102,"props":4803,"children":4804},{"style":554},[4805],{"type":26,"value":557},{"type":20,"tag":102,"props":4807,"children":4808},{"style":625},[4809],{"type":26,"value":628},{"type":20,"tag":102,"props":4811,"children":4812},{"style":631},[4813],{"type":26,"value":4814},"ECSServiceAverageCPUUtilization",{"type":20,"tag":102,"props":4816,"children":4817},{"style":625},[4818],{"type":26,"value":639},{"type":20,"tag":102,"props":4820,"children":4822},{"class":104,"line":4821},96,[4823],{"type":20,"tag":102,"props":4824,"children":4825},{"style":540},[4826],{"type":26,"value":3630},{"type":20,"tag":102,"props":4828,"children":4830},{"class":104,"line":4829},97,[4831],{"type":20,"tag":102,"props":4832,"children":4833},{"style":540},[4834],{"type":26,"value":1227},{"type":20,"tag":102,"props":4836,"children":4838},{"class":104,"line":4837},98,[4839],{"type":20,"tag":102,"props":4840,"children":4841},{"style":540},[4842],{"type":26,"value":571},{"type":20,"tag":43,"props":4844,"children":4846},{"id":4845},"usage-spinning-up-an-environment",[4847],{"type":26,"value":4848},"Usage — Spinning Up an Environment",{"type":20,"tag":92,"props":4850,"children":4852},{"className":507,"code":4851,"language":509,"meta":7,"style":7},"# environments/production/main.tf\nmodule \"vpc\" {\n  source      = \"../../modules/vpc\"\n  environment = \"production\"\n  vpc_cidr    = \"10.0.0.0/16\"\n}\n\nmodule \"ecs_cluster\" {\n  source      = \"../../modules/ecs-cluster\"\n  environment = \"production\"\n  vpc_id      = module.vpc.vpc_id\n  subnet_ids  = module.vpc.public_subnet_ids\n}\n\nmodule \"api_service\" {\n  source             = \"../../modules/ecs-service\"\n  cluster_id         = module.ecs_cluster.cluster_id\n  service_name       = \"api\"\n  image              = \"123456789.dkr.ecr.ap-southeast-1.amazonaws.com/api:latest\"\n  cpu                = 512\n  memory             = 1024\n  desired_count      = 3\n  min_count          = 2\n  max_count          = 20\n  subnet_ids         = module.vpc.private_subnet_ids\n  security_group_ids = [module.ecs_cluster.tasks_security_group_id]\n  target_group_arn   = module.ecs_cluster.target_group_arn\n}\n\nmodule \"rds\" {\n  source      = \"../../modules/rds\"\n  environment = \"production\"\n  engine      = \"mysql\"\n  instance_class = \"db.r6g.large\"\n  subnet_ids  = module.vpc.private_subnet_ids\n  vpc_id      = module.vpc.vpc_id\n}\n",[4853],{"type":20,"tag":34,"props":4854,"children":4855},{"__ignoreMap":7},[4856,4864,4881,4906,4930,4954,4961,4968,4984,5008,5031,5064,5097,5104,5111,5127,5151,5184,5209,5235,5252,5268,5284,5302,5319,5351,5392,5424,5431,5438,5454,5478,5501,5526,5551,5582,5613],{"type":20,"tag":102,"props":4857,"children":4858},{"class":104,"line":105},[4859],{"type":20,"tag":102,"props":4860,"children":4861},{"style":519},[4862],{"type":26,"value":4863},"# environments/production/main.tf\n",{"type":20,"tag":102,"props":4865,"children":4866},{"class":104,"line":115},[4867,4872,4877],{"type":20,"tag":102,"props":4868,"children":4869},{"style":528},[4870],{"type":26,"value":4871},"module",{"type":20,"tag":102,"props":4873,"children":4874},{"style":534},[4875],{"type":26,"value":4876}," \"vpc\"",{"type":20,"tag":102,"props":4878,"children":4879},{"style":540},[4880],{"type":26,"value":543},{"type":20,"tag":102,"props":4882,"children":4883},{"class":104,"line":124},[4884,4889,4893,4897,4902],{"type":20,"tag":102,"props":4885,"children":4886},{"style":109},[4887],{"type":26,"value":4888},"  source",{"type":20,"tag":102,"props":4890,"children":4891},{"style":554},[4892],{"type":26,"value":3448},{"type":20,"tag":102,"props":4894,"children":4895},{"style":625},[4896],{"type":26,"value":628},{"type":20,"tag":102,"props":4898,"children":4899},{"style":631},[4900],{"type":26,"value":4901},"../../modules/vpc",{"type":20,"tag":102,"props":4903,"children":4904},{"style":625},[4905],{"type":26,"value":639},{"type":20,"tag":102,"props":4907,"children":4908},{"class":104,"line":133},[4909,4914,4918,4922,4926],{"type":20,"tag":102,"props":4910,"children":4911},{"style":109},[4912],{"type":26,"value":4913},"  environment",{"type":20,"tag":102,"props":4915,"children":4916},{"style":554},[4917],{"type":26,"value":557},{"type":20,"tag":102,"props":4919,"children":4920},{"style":625},[4921],{"type":26,"value":628},{"type":20,"tag":102,"props":4923,"children":4924},{"style":631},[4925],{"type":26,"value":2042},{"type":20,"tag":102,"props":4927,"children":4928},{"style":625},[4929],{"type":26,"value":639},{"type":20,"tag":102,"props":4931,"children":4932},{"class":104,"line":142},[4933,4938,4942,4946,4950],{"type":20,"tag":102,"props":4934,"children":4935},{"style":109},[4936],{"type":26,"value":4937},"  vpc_cidr",{"type":20,"tag":102,"props":4939,"children":4940},{"style":554},[4941],{"type":26,"value":606},{"type":20,"tag":102,"props":4943,"children":4944},{"style":625},[4945],{"type":26,"value":628},{"type":20,"tag":102,"props":4947,"children":4948},{"style":631},[4949],{"type":26,"value":634},{"type":20,"tag":102,"props":4951,"children":4952},{"style":625},[4953],{"type":26,"value":639},{"type":20,"tag":102,"props":4955,"children":4956},{"class":104,"line":152},[4957],{"type":20,"tag":102,"props":4958,"children":4959},{"style":540},[4960],{"type":26,"value":571},{"type":20,"tag":102,"props":4962,"children":4963},{"class":104,"line":161},[4964],{"type":20,"tag":102,"props":4965,"children":4966},{"emptyLinePlaceholder":146},[4967],{"type":26,"value":149},{"type":20,"tag":102,"props":4969,"children":4970},{"class":104,"line":170},[4971,4975,4980],{"type":20,"tag":102,"props":4972,"children":4973},{"style":528},[4974],{"type":26,"value":4871},{"type":20,"tag":102,"props":4976,"children":4977},{"style":534},[4978],{"type":26,"value":4979}," \"ecs_cluster\"",{"type":20,"tag":102,"props":4981,"children":4982},{"style":540},[4983],{"type":26,"value":543},{"type":20,"tag":102,"props":4985,"children":4986},{"class":104,"line":178},[4987,4991,4995,4999,5004],{"type":20,"tag":102,"props":4988,"children":4989},{"style":109},[4990],{"type":26,"value":4888},{"type":20,"tag":102,"props":4992,"children":4993},{"style":554},[4994],{"type":26,"value":3448},{"type":20,"tag":102,"props":4996,"children":4997},{"style":625},[4998],{"type":26,"value":628},{"type":20,"tag":102,"props":5000,"children":5001},{"style":631},[5002],{"type":26,"value":5003},"../../modules/ecs-cluster",{"type":20,"tag":102,"props":5005,"children":5006},{"style":625},[5007],{"type":26,"value":639},{"type":20,"tag":102,"props":5009,"children":5010},{"class":104,"line":186},[5011,5015,5019,5023,5027],{"type":20,"tag":102,"props":5012,"children":5013},{"style":109},[5014],{"type":26,"value":4913},{"type":20,"tag":102,"props":5016,"children":5017},{"style":554},[5018],{"type":26,"value":557},{"type":20,"tag":102,"props":5020,"children":5021},{"style":625},[5022],{"type":26,"value":628},{"type":20,"tag":102,"props":5024,"children":5025},{"style":631},[5026],{"type":26,"value":2042},{"type":20,"tag":102,"props":5028,"children":5029},{"style":625},[5030],{"type":26,"value":639},{"type":20,"tag":102,"props":5032,"children":5033},{"class":104,"line":195},[5034,5038,5042,5047,5051,5055,5059],{"type":20,"tag":102,"props":5035,"children":5036},{"style":109},[5037],{"type":26,"value":1308},{"type":20,"tag":102,"props":5039,"children":5040},{"style":554},[5041],{"type":26,"value":3448},{"type":20,"tag":102,"props":5043,"children":5044},{"style":870},[5045],{"type":26,"value":5046}," module",{"type":20,"tag":102,"props":5048,"children":5049},{"style":554},[5050],{"type":26,"value":41},{"type":20,"tag":102,"props":5052,"children":5053},{"style":109},[5054],{"type":26,"value":2107},{"type":20,"tag":102,"props":5056,"children":5057},{"style":554},[5058],{"type":26,"value":41},{"type":20,"tag":102,"props":5060,"children":5061},{"style":109},[5062],{"type":26,"value":5063},"vpc_id\n",{"type":20,"tag":102,"props":5065,"children":5066},{"class":104,"line":204},[5067,5072,5076,5080,5084,5088,5092],{"type":20,"tag":102,"props":5068,"children":5069},{"style":109},[5070],{"type":26,"value":5071},"  subnet_ids",{"type":20,"tag":102,"props":5073,"children":5074},{"style":554},[5075],{"type":26,"value":809},{"type":20,"tag":102,"props":5077,"children":5078},{"style":870},[5079],{"type":26,"value":5046},{"type":20,"tag":102,"props":5081,"children":5082},{"style":554},[5083],{"type":26,"value":41},{"type":20,"tag":102,"props":5085,"children":5086},{"style":109},[5087],{"type":26,"value":2107},{"type":20,"tag":102,"props":5089,"children":5090},{"style":554},[5091],{"type":26,"value":41},{"type":20,"tag":102,"props":5093,"children":5094},{"style":109},[5095],{"type":26,"value":5096},"public_subnet_ids\n",{"type":20,"tag":102,"props":5098,"children":5099},{"class":104,"line":213},[5100],{"type":20,"tag":102,"props":5101,"children":5102},{"style":540},[5103],{"type":26,"value":571},{"type":20,"tag":102,"props":5105,"children":5106},{"class":104,"line":222},[5107],{"type":20,"tag":102,"props":5108,"children":5109},{"emptyLinePlaceholder":146},[5110],{"type":26,"value":149},{"type":20,"tag":102,"props":5112,"children":5113},{"class":104,"line":230},[5114,5118,5123],{"type":20,"tag":102,"props":5115,"children":5116},{"style":528},[5117],{"type":26,"value":4871},{"type":20,"tag":102,"props":5119,"children":5120},{"style":534},[5121],{"type":26,"value":5122}," \"api_service\"",{"type":20,"tag":102,"props":5124,"children":5125},{"style":540},[5126],{"type":26,"value":543},{"type":20,"tag":102,"props":5128,"children":5129},{"class":104,"line":238},[5130,5134,5138,5142,5147],{"type":20,"tag":102,"props":5131,"children":5132},{"style":109},[5133],{"type":26,"value":4888},{"type":20,"tag":102,"props":5135,"children":5136},{"style":554},[5137],{"type":26,"value":1275},{"type":20,"tag":102,"props":5139,"children":5140},{"style":625},[5141],{"type":26,"value":628},{"type":20,"tag":102,"props":5143,"children":5144},{"style":631},[5145],{"type":26,"value":5146},"../../modules/ecs-service",{"type":20,"tag":102,"props":5148,"children":5149},{"style":625},[5150],{"type":26,"value":639},{"type":20,"tag":102,"props":5152,"children":5153},{"class":104,"line":247},[5154,5159,5163,5167,5171,5176,5180],{"type":20,"tag":102,"props":5155,"children":5156},{"style":109},[5157],{"type":26,"value":5158},"  cluster_id",{"type":20,"tag":102,"props":5160,"children":5161},{"style":554},[5162],{"type":26,"value":2161},{"type":20,"tag":102,"props":5164,"children":5165},{"style":870},[5166],{"type":26,"value":5046},{"type":20,"tag":102,"props":5168,"children":5169},{"style":554},[5170],{"type":26,"value":41},{"type":20,"tag":102,"props":5172,"children":5173},{"style":109},[5174],{"type":26,"value":5175},"ecs_cluster",{"type":20,"tag":102,"props":5177,"children":5178},{"style":554},[5179],{"type":26,"value":41},{"type":20,"tag":102,"props":5181,"children":5182},{"style":109},[5183],{"type":26,"value":3865},{"type":20,"tag":102,"props":5185,"children":5186},{"class":104,"line":256},[5187,5192,5196,5200,5205],{"type":20,"tag":102,"props":5188,"children":5189},{"style":109},[5190],{"type":26,"value":5191},"  service_name",{"type":20,"tag":102,"props":5193,"children":5194},{"style":554},[5195],{"type":26,"value":3278},{"type":20,"tag":102,"props":5197,"children":5198},{"style":625},[5199],{"type":26,"value":628},{"type":20,"tag":102,"props":5201,"children":5202},{"style":631},[5203],{"type":26,"value":5204},"api",{"type":20,"tag":102,"props":5206,"children":5207},{"style":625},[5208],{"type":26,"value":639},{"type":20,"tag":102,"props":5210,"children":5211},{"class":104,"line":265},[5212,5217,5222,5226,5231],{"type":20,"tag":102,"props":5213,"children":5214},{"style":109},[5215],{"type":26,"value":5216},"  image",{"type":20,"tag":102,"props":5218,"children":5219},{"style":554},[5220],{"type":26,"value":5221},"              =",{"type":20,"tag":102,"props":5223,"children":5224},{"style":625},[5225],{"type":26,"value":628},{"type":20,"tag":102,"props":5227,"children":5228},{"style":631},[5229],{"type":26,"value":5230},"123456789.dkr.ecr.ap-southeast-1.amazonaws.com/api:latest",{"type":20,"tag":102,"props":5232,"children":5233},{"style":625},[5234],{"type":26,"value":639},{"type":20,"tag":102,"props":5236,"children":5237},{"class":104,"line":273},[5238,5242,5247],{"type":20,"tag":102,"props":5239,"children":5240},{"style":109},[5241],{"type":26,"value":3222},{"type":20,"tag":102,"props":5243,"children":5244},{"style":554},[5245],{"type":26,"value":5246},"                =",{"type":20,"tag":102,"props":5248,"children":5249},{"style":889},[5250],{"type":26,"value":5251}," 512\n",{"type":20,"tag":102,"props":5253,"children":5254},{"class":104,"line":281},[5255,5259,5263],{"type":20,"tag":102,"props":5256,"children":5257},{"style":109},[5258],{"type":26,"value":3248},{"type":20,"tag":102,"props":5260,"children":5261},{"style":554},[5262],{"type":26,"value":1275},{"type":20,"tag":102,"props":5264,"children":5265},{"style":889},[5266],{"type":26,"value":5267}," 1024\n",{"type":20,"tag":102,"props":5269,"children":5270},{"class":104,"line":290},[5271,5275,5279],{"type":20,"tag":102,"props":5272,"children":5273},{"style":109},[5274],{"type":26,"value":3907},{"type":20,"tag":102,"props":5276,"children":5277},{"style":554},[5278],{"type":26,"value":3448},{"type":20,"tag":102,"props":5280,"children":5281},{"style":889},[5282],{"type":26,"value":5283}," 3\n",{"type":20,"tag":102,"props":5285,"children":5286},{"class":104,"line":299},[5287,5292,5297],{"type":20,"tag":102,"props":5288,"children":5289},{"style":109},[5290],{"type":26,"value":5291},"  min_count",{"type":20,"tag":102,"props":5293,"children":5294},{"style":554},[5295],{"type":26,"value":5296},"          =",{"type":20,"tag":102,"props":5298,"children":5299},{"style":889},[5300],{"type":26,"value":5301}," 2\n",{"type":20,"tag":102,"props":5303,"children":5304},{"class":104,"line":308},[5305,5310,5314],{"type":20,"tag":102,"props":5306,"children":5307},{"style":109},[5308],{"type":26,"value":5309},"  max_count",{"type":20,"tag":102,"props":5311,"children":5312},{"style":554},[5313],{"type":26,"value":5296},{"type":20,"tag":102,"props":5315,"children":5316},{"style":889},[5317],{"type":26,"value":5318}," 20\n",{"type":20,"tag":102,"props":5320,"children":5321},{"class":104,"line":316},[5322,5326,5330,5334,5338,5342,5346],{"type":20,"tag":102,"props":5323,"children":5324},{"style":109},[5325],{"type":26,"value":5071},{"type":20,"tag":102,"props":5327,"children":5328},{"style":554},[5329],{"type":26,"value":2161},{"type":20,"tag":102,"props":5331,"children":5332},{"style":870},[5333],{"type":26,"value":5046},{"type":20,"tag":102,"props":5335,"children":5336},{"style":554},[5337],{"type":26,"value":41},{"type":20,"tag":102,"props":5339,"children":5340},{"style":109},[5341],{"type":26,"value":2107},{"type":20,"tag":102,"props":5343,"children":5344},{"style":554},[5345],{"type":26,"value":41},{"type":20,"tag":102,"props":5347,"children":5348},{"style":109},[5349],{"type":26,"value":5350},"private_subnet_ids\n",{"type":20,"tag":102,"props":5352,"children":5353},{"class":104,"line":324},[5354,5359,5363,5367,5371,5375,5379,5383,5388],{"type":20,"tag":102,"props":5355,"children":5356},{"style":109},[5357],{"type":26,"value":5358},"  security_group_ids",{"type":20,"tag":102,"props":5360,"children":5361},{"style":554},[5362],{"type":26,"value":557},{"type":20,"tag":102,"props":5364,"children":5365},{"style":540},[5366],{"type":26,"value":716},{"type":20,"tag":102,"props":5368,"children":5369},{"style":109},[5370],{"type":26,"value":4871},{"type":20,"tag":102,"props":5372,"children":5373},{"style":554},[5374],{"type":26,"value":41},{"type":20,"tag":102,"props":5376,"children":5377},{"style":109},[5378],{"type":26,"value":5175},{"type":20,"tag":102,"props":5380,"children":5381},{"style":554},[5382],{"type":26,"value":41},{"type":20,"tag":102,"props":5384,"children":5385},{"style":109},[5386],{"type":26,"value":5387},"tasks_security_group_id",{"type":20,"tag":102,"props":5389,"children":5390},{"style":540},[5391],{"type":26,"value":770},{"type":20,"tag":102,"props":5393,"children":5394},{"class":104,"line":333},[5395,5400,5404,5408,5412,5416,5420],{"type":20,"tag":102,"props":5396,"children":5397},{"style":109},[5398],{"type":26,"value":5399},"  target_group_arn",{"type":20,"tag":102,"props":5401,"children":5402},{"style":554},[5403],{"type":26,"value":1101},{"type":20,"tag":102,"props":5405,"children":5406},{"style":870},[5407],{"type":26,"value":5046},{"type":20,"tag":102,"props":5409,"children":5410},{"style":554},[5411],{"type":26,"value":41},{"type":20,"tag":102,"props":5413,"children":5414},{"style":109},[5415],{"type":26,"value":5175},{"type":20,"tag":102,"props":5417,"children":5418},{"style":554},[5419],{"type":26,"value":41},{"type":20,"tag":102,"props":5421,"children":5422},{"style":109},[5423],{"type":26,"value":4068},{"type":20,"tag":102,"props":5425,"children":5426},{"class":104,"line":342},[5427],{"type":20,"tag":102,"props":5428,"children":5429},{"style":540},[5430],{"type":26,"value":571},{"type":20,"tag":102,"props":5432,"children":5433},{"class":104,"line":350},[5434],{"type":20,"tag":102,"props":5435,"children":5436},{"emptyLinePlaceholder":146},[5437],{"type":26,"value":149},{"type":20,"tag":102,"props":5439,"children":5440},{"class":104,"line":358},[5441,5445,5450],{"type":20,"tag":102,"props":5442,"children":5443},{"style":528},[5444],{"type":26,"value":4871},{"type":20,"tag":102,"props":5446,"children":5447},{"style":534},[5448],{"type":26,"value":5449}," \"rds\"",{"type":20,"tag":102,"props":5451,"children":5452},{"style":540},[5453],{"type":26,"value":543},{"type":20,"tag":102,"props":5455,"children":5456},{"class":104,"line":367},[5457,5461,5465,5469,5474],{"type":20,"tag":102,"props":5458,"children":5459},{"style":109},[5460],{"type":26,"value":4888},{"type":20,"tag":102,"props":5462,"children":5463},{"style":554},[5464],{"type":26,"value":3448},{"type":20,"tag":102,"props":5466,"children":5467},{"style":625},[5468],{"type":26,"value":628},{"type":20,"tag":102,"props":5470,"children":5471},{"style":631},[5472],{"type":26,"value":5473},"../../modules/rds",{"type":20,"tag":102,"props":5475,"children":5476},{"style":625},[5477],{"type":26,"value":639},{"type":20,"tag":102,"props":5479,"children":5480},{"class":104,"line":376},[5481,5485,5489,5493,5497],{"type":20,"tag":102,"props":5482,"children":5483},{"style":109},[5484],{"type":26,"value":4913},{"type":20,"tag":102,"props":5486,"children":5487},{"style":554},[5488],{"type":26,"value":557},{"type":20,"tag":102,"props":5490,"children":5491},{"style":625},[5492],{"type":26,"value":628},{"type":20,"tag":102,"props":5494,"children":5495},{"style":631},[5496],{"type":26,"value":2042},{"type":20,"tag":102,"props":5498,"children":5499},{"style":625},[5500],{"type":26,"value":639},{"type":20,"tag":102,"props":5502,"children":5503},{"class":104,"line":385},[5504,5509,5513,5517,5522],{"type":20,"tag":102,"props":5505,"children":5506},{"style":109},[5507],{"type":26,"value":5508},"  engine",{"type":20,"tag":102,"props":5510,"children":5511},{"style":554},[5512],{"type":26,"value":3448},{"type":20,"tag":102,"props":5514,"children":5515},{"style":625},[5516],{"type":26,"value":628},{"type":20,"tag":102,"props":5518,"children":5519},{"style":631},[5520],{"type":26,"value":5521},"mysql",{"type":20,"tag":102,"props":5523,"children":5524},{"style":625},[5525],{"type":26,"value":639},{"type":20,"tag":102,"props":5527,"children":5528},{"class":104,"line":394},[5529,5534,5538,5542,5547],{"type":20,"tag":102,"props":5530,"children":5531},{"style":109},[5532],{"type":26,"value":5533},"  instance_class",{"type":20,"tag":102,"props":5535,"children":5536},{"style":554},[5537],{"type":26,"value":557},{"type":20,"tag":102,"props":5539,"children":5540},{"style":625},[5541],{"type":26,"value":628},{"type":20,"tag":102,"props":5543,"children":5544},{"style":631},[5545],{"type":26,"value":5546},"db.r6g.large",{"type":20,"tag":102,"props":5548,"children":5549},{"style":625},[5550],{"type":26,"value":639},{"type":20,"tag":102,"props":5552,"children":5553},{"class":104,"line":403},[5554,5558,5562,5566,5570,5574,5578],{"type":20,"tag":102,"props":5555,"children":5556},{"style":109},[5557],{"type":26,"value":5071},{"type":20,"tag":102,"props":5559,"children":5560},{"style":554},[5561],{"type":26,"value":809},{"type":20,"tag":102,"props":5563,"children":5564},{"style":870},[5565],{"type":26,"value":5046},{"type":20,"tag":102,"props":5567,"children":5568},{"style":554},[5569],{"type":26,"value":41},{"type":20,"tag":102,"props":5571,"children":5572},{"style":109},[5573],{"type":26,"value":2107},{"type":20,"tag":102,"props":5575,"children":5576},{"style":554},[5577],{"type":26,"value":41},{"type":20,"tag":102,"props":5579,"children":5580},{"style":109},[5581],{"type":26,"value":5350},{"type":20,"tag":102,"props":5583,"children":5584},{"class":104,"line":412},[5585,5589,5593,5597,5601,5605,5609],{"type":20,"tag":102,"props":5586,"children":5587},{"style":109},[5588],{"type":26,"value":1308},{"type":20,"tag":102,"props":5590,"children":5591},{"style":554},[5592],{"type":26,"value":3448},{"type":20,"tag":102,"props":5594,"children":5595},{"style":870},[5596],{"type":26,"value":5046},{"type":20,"tag":102,"props":5598,"children":5599},{"style":554},[5600],{"type":26,"value":41},{"type":20,"tag":102,"props":5602,"children":5603},{"style":109},[5604],{"type":26,"value":2107},{"type":20,"tag":102,"props":5606,"children":5607},{"style":554},[5608],{"type":26,"value":41},{"type":20,"tag":102,"props":5610,"children":5611},{"style":109},[5612],{"type":26,"value":5063},{"type":20,"tag":102,"props":5614,"children":5615},{"class":104,"line":421},[5616],{"type":20,"tag":102,"props":5617,"children":5618},{"style":540},[5619],{"type":26,"value":571},{"type":20,"tag":43,"props":5621,"children":5623},{"id":5622},"key-principles",[5624],{"type":26,"value":5625},"Key Principles",{"type":20,"tag":5627,"props":5628,"children":5629},"ol",{},[5630,5640,5650,5660,5670],{"type":20,"tag":54,"props":5631,"children":5632},{},[5633,5638],{"type":20,"tag":58,"props":5634,"children":5635},{},[5636],{"type":26,"value":5637},"Environment parity",{"type":26,"value":5639}," — Same modules for staging and production, different variables",{"type":20,"tag":54,"props":5641,"children":5642},{},[5643,5648],{"type":20,"tag":58,"props":5644,"children":5645},{},[5646],{"type":26,"value":5647},"Least privilege",{"type":26,"value":5649}," — Each service gets its own task role with minimum permissions",{"type":20,"tag":54,"props":5651,"children":5652},{},[5653,5658],{"type":20,"tag":58,"props":5654,"children":5655},{},[5656],{"type":26,"value":5657},"Encryption everywhere",{"type":26,"value":5659}," — KMS keys for RDS, S3, and EBS by default",{"type":20,"tag":54,"props":5661,"children":5662},{},[5663,5668],{"type":20,"tag":58,"props":5664,"children":5665},{},[5666],{"type":26,"value":5667},"OpenTelemetry baked in",{"type":26,"value":5669}," — Every service container gets OTEL env vars automatically",{"type":20,"tag":54,"props":5671,"children":5672},{},[5673,5678],{"type":20,"tag":58,"props":5674,"children":5675},{},[5676],{"type":26,"value":5677},"Circuit breakers",{"type":26,"value":5679}," — Deployment failures auto-rollback without intervention",{"type":20,"tag":43,"props":5681,"children":5683},{"id":5682},"migration-from-terraform",[5684],{"type":26,"value":5685},"Migration from Terraform",{"type":20,"tag":28,"props":5687,"children":5688},{},[5689],{"type":26,"value":5690},"The migration was seamless:",{"type":20,"tag":92,"props":5692,"children":5696},{"className":5693,"code":5694,"language":5695,"meta":7,"style":7},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","# 1. Install OpenTofu\nbrew install opentofu\n\n# 2. Initialize (uses same .terraform.lock.hcl)\ntofu init\n\n# 3. Import existing state\ntofu state pull > state.json\n# (state format is identical)\n\n# 4. Plan to verify no changes\ntofu plan\n# No changes. Your infrastructure matches the configuration.\n","bash",[5697],{"type":20,"tag":34,"props":5698,"children":5699},{"__ignoreMap":7},[5700,5708,5726,5733,5741,5754,5761,5769,5796,5804,5811,5819,5831],{"type":20,"tag":102,"props":5701,"children":5702},{"class":104,"line":105},[5703],{"type":20,"tag":102,"props":5704,"children":5705},{"style":519},[5706],{"type":26,"value":5707},"# 1. Install OpenTofu\n",{"type":20,"tag":102,"props":5709,"children":5710},{"class":104,"line":115},[5711,5716,5721],{"type":20,"tag":102,"props":5712,"children":5713},{"style":528},[5714],{"type":26,"value":5715},"brew",{"type":20,"tag":102,"props":5717,"children":5718},{"style":631},[5719],{"type":26,"value":5720}," install",{"type":20,"tag":102,"props":5722,"children":5723},{"style":631},[5724],{"type":26,"value":5725}," opentofu\n",{"type":20,"tag":102,"props":5727,"children":5728},{"class":104,"line":124},[5729],{"type":20,"tag":102,"props":5730,"children":5731},{"emptyLinePlaceholder":146},[5732],{"type":26,"value":149},{"type":20,"tag":102,"props":5734,"children":5735},{"class":104,"line":133},[5736],{"type":20,"tag":102,"props":5737,"children":5738},{"style":519},[5739],{"type":26,"value":5740},"# 2. Initialize (uses same .terraform.lock.hcl)\n",{"type":20,"tag":102,"props":5742,"children":5743},{"class":104,"line":142},[5744,5749],{"type":20,"tag":102,"props":5745,"children":5746},{"style":528},[5747],{"type":26,"value":5748},"tofu",{"type":20,"tag":102,"props":5750,"children":5751},{"style":631},[5752],{"type":26,"value":5753}," init\n",{"type":20,"tag":102,"props":5755,"children":5756},{"class":104,"line":152},[5757],{"type":20,"tag":102,"props":5758,"children":5759},{"emptyLinePlaceholder":146},[5760],{"type":26,"value":149},{"type":20,"tag":102,"props":5762,"children":5763},{"class":104,"line":161},[5764],{"type":20,"tag":102,"props":5765,"children":5766},{"style":519},[5767],{"type":26,"value":5768},"# 3. Import existing state\n",{"type":20,"tag":102,"props":5770,"children":5771},{"class":104,"line":170},[5772,5776,5781,5786,5791],{"type":20,"tag":102,"props":5773,"children":5774},{"style":528},[5775],{"type":26,"value":5748},{"type":20,"tag":102,"props":5777,"children":5778},{"style":631},[5779],{"type":26,"value":5780}," state",{"type":20,"tag":102,"props":5782,"children":5783},{"style":631},[5784],{"type":26,"value":5785}," pull",{"type":20,"tag":102,"props":5787,"children":5788},{"style":554},[5789],{"type":26,"value":5790}," >",{"type":20,"tag":102,"props":5792,"children":5793},{"style":631},[5794],{"type":26,"value":5795}," state.json\n",{"type":20,"tag":102,"props":5797,"children":5798},{"class":104,"line":178},[5799],{"type":20,"tag":102,"props":5800,"children":5801},{"style":519},[5802],{"type":26,"value":5803},"# (state format is identical)\n",{"type":20,"tag":102,"props":5805,"children":5806},{"class":104,"line":186},[5807],{"type":20,"tag":102,"props":5808,"children":5809},{"emptyLinePlaceholder":146},[5810],{"type":26,"value":149},{"type":20,"tag":102,"props":5812,"children":5813},{"class":104,"line":195},[5814],{"type":20,"tag":102,"props":5815,"children":5816},{"style":519},[5817],{"type":26,"value":5818},"# 4. Plan to verify no changes\n",{"type":20,"tag":102,"props":5820,"children":5821},{"class":104,"line":204},[5822,5826],{"type":20,"tag":102,"props":5823,"children":5824},{"style":528},[5825],{"type":26,"value":5748},{"type":20,"tag":102,"props":5827,"children":5828},{"style":631},[5829],{"type":26,"value":5830}," plan\n",{"type":20,"tag":102,"props":5832,"children":5833},{"class":104,"line":213},[5834],{"type":20,"tag":102,"props":5835,"children":5836},{"style":519},[5837],{"type":26,"value":5838},"# No changes. Your infrastructure matches the configuration.\n",{"type":20,"tag":28,"props":5840,"children":5841},{},[5842],{"type":26,"value":5843},"Zero infrastructure changes required. Just a tool swap.",{"type":20,"tag":5845,"props":5846,"children":5847},"style",{},[5848],{"type":26,"value":5849},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":7,"searchDepth":115,"depth":115,"links":5851},[5852,5853,5854,5855,5856,5857,5858],{"id":45,"depth":115,"text":48},{"id":87,"depth":115,"text":90},{"id":501,"depth":115,"text":504},{"id":2568,"depth":115,"text":2571},{"id":4845,"depth":115,"text":4848},{"id":5622,"depth":115,"text":5625},{"id":5682,"depth":115,"text":5685},"markdown","content:codes:opentofu-modules.md","content","codes/opentofu-modules.md","codes/opentofu-modules","md",1782460598426]