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
}
}
}
我的 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
}
}
}