# Iterate over map objects

**URL:** <https://discuss.hashicorp.com/t/iterate-over-map-objects/26270>\
**Category:** Terraform\
**Created:** [July 1, 2021, 11:02pm UTC](https://discuss.hashicorp.com/t/iterate-over-map-objects/26270 "2021-07-01T23:02:52Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![woody](https://sea2.discourse-cdn.com/hashicorp/user_avatar/discuss.hashicorp.com/woody/32/16797_2.png) [@woody](https://discuss.hashicorp.com/u/woody)\
**Post date:** [July 1, 2021, 11:02pm UTC](https://discuss.hashicorp.com/t/iterate-over-map-objects/26270/1 "2021-07-01T23:02:52Z")

</div>

Hello,

I have the module to manage KMS keys :

**main.tf**

```auto
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**

```auto
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

```auto
module "kms_keys" {

  source = "../module/kms_v3"

  common_tags = local.common_tags
  kms_key_list = local.kms_keys
}

```

locals file looks like

```auto
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

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

```

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