Terraform For each loop on object 并传递给子模块

Terraform For each loop on object and pass to child module

我的 variables.tf 文件中有一个复杂类型(对象)的 AWS s3 生命周期规则,并将其分配给一个变量。之后,我使用 for_each 循环遍历对象并将此变量从父模块传递到子模块,在子模块中创建了 s3 资源,我被卡住了,我不确定我的方法是否正确.我知道 for_each 循环只接受地图和集合,但我找不到任何资源来将对象转换为地图,我很困惑是否应该将对象转换为地图。

我是 Terraform 的新手,使用的是 Terraform v1.0.5,下面的错误没有任何帮助,我也尝试搜索但没有成功。我在过去两天尝试实施它。如果有人能指导我我做错了什么,我将不胜感激。

您的父模块 xyz-parent-module 应该像这样传递变量 rule_xyz:-

module "xyz-parent-module" {
  source = "./aws-module/s3-bucket-module"

  for_each = var.lifecycle_rule_60_days
  rule_xyz = {
    lifecycle_id    = each.value["life_id"]
    prefix_value    = each.value["prefix_val"]
    enabled_value   = each.value["bucket_enabled"]
    expiration_days = {
      days_value = each.value["expiration_list"].expiration_days
    }
  }
}