Iterate over map objects

Hello,

I have the module to manage KMS keys :

main.tf

locals {
  kms_keys = flatten([
    for key, kms_key in var.kms_key_list : [
      for index in range(kms_key.key_id) : {
        key_id                      = index
        aws_kms_alias               = kms_key.alias
        is_rotating                 = kms_key.enable_key_rotation
        deletion_window_in_days     = kms_key.deletion_window_in_days
        is_enabled                  = kms_key.is_enabled
        description                 = kms_key.description
        policy                      = kms_key.policy
      }
    ]
  ])
}

resource "aws_kms_key" "main" {
  for_each = {
    for k, v in local.kms_keys: k => v if v.key_id > 0
  }
  deletion_window_in_days = each.value.deletion_window_in_days
  is_enabled              = each.value.is_enabled
  enable_key_rotation     = each.value.enable_key_rotation
  description             = each.value.description
  policy                  = each.value.policy
  tags = merge({
    Name = each.value.aws_kms_alias
  }, var.common_tags)
}

resource "aws_kms_alias" "alias" {
  for_each      = aws_kms_key.main
  name          = "alias/${each.value.tags.Name}"
  target_key_id = each.value.key_id
}

variables.tf

variable "kms_key_list" {
  type = map(object({
      key_id                    = number
      deletion_window_in_days   = number
      is_enabled                = bool
      enable_key_rotation       = bool
      description               = string
      policy                    = string
      key_usage                 = string
      customer_master_key_spec  = string
      alias                     = string
  }))
}

calling the module in main.tf

module "kms_keys" {

  source = "../module/kms_v3"

  common_tags = local.common_tags
  kms_key_list = local.kms_keys
}

locals file looks like

locals {
  kms_keys = {
    name_1 = {
      key_id                    = 1
      deletion_window_in_days   = 7
      is_enabled                = true
      enable_key_rotation       = true
      description               = "description_1"
      policy                    = ""
      key_usage                 = "ENCRYPT_DECRYPT"
      customer_master_key_spec  = "SYMMETRIC_DEFAULT"
      alias                     = "alias_1"
    },
    name_2 = {
      key_id                    = 1
      deletion_window_in_days   = 14
      is_enabled                = true
      enable_key_rotation       = true
      description               = "description_2"
      policy                    = ""
      key_usage                 = "ENCRYPT_DECRYPT"
      customer_master_key_spec  = "SYMMETRIC_DEFAULT"
      alias                     = "alias_2"
    }
  }
}

but when I run a plan, I get

Changes to Outputs:
  + kms_info = {
      + kms_key = {}
    }

Any thought why I’m getting empty output? I really appreciate any help you can provide.