Nested Dynamic block on counted resource not working as expected

Need you kind help. I am stuck with following resource creation

I need to create appropriate subnets dynamically in two VPCs

variables.tf

vpc_resource_networks = {
  pnw-01 =  [
    [
      {
        subnet_name   = "wb-01"
        subnet_ip     = "10.58.72.0/25"
        description   = "WEB01"
        index         = 0
      },
      {
        subnet_name   = "wb-02"
        subnet_ip     = "10.58.72.128/25"
        description   = "WEB02"
        index         = 1
      }
    ],
    [
      {
        subnet_name   = "asg-net-ca-01-wb-01"
        subnet_ip     = "10.58.80.0/25"
        description   = "WEB (including LB) 01"
      },
      {
        subnet_name   = "10.58.80.128/25"
        subnet_ip     = "10.58.72.128/25"
        description   = "WEB (including LB) 02"
      }
    ]
  ]

}

main.tf

locals {
  wlb_net   = element(keys(var.vpc_resource_networks), 0)
}


resource "aws_subnet" "wlb" {


  count = length(module.aws_vpc_app_resource)
  vpc_id = element(module.aws_vpc_app_resource.*.vpc_id, count.index)
  dynamic "subnet_group" {
    for_each = var.vpc_resource_networks[local.wlb_net][count.index]
    content {
      dynamic "subnet" {
        for_each = subnet_group.value
        content {
          cidr_block = subnet.subnet_ip
          availability_zone  = element(var.azs, subnet.index)
          tags = {
            Name = subnet.subnet_name
          }
        }
      }
    }

}

I intend to create subnets dynamically which is var.vpc_resource_networks.pnw01[0] should be on one vpc and other index on another VPC.
The above block returns

dynamic “subnet_group” {
Blocks of type “subnet_group” are not expected here.

Please assist

Hi @nageebuddy,

The error indicates there is no subnet_group block in the aws_subnet resource, which I can confirm looking at the docs. It is possible you are using the wrong resource type?

the resource aws_subnet doesn’t have an argument subnet_groups.

Yes you are right.My understanding of dynamic block was wrong. Thanks for your reple