Terraform for_each迭代模块如何跨模块引用输出属性
问题根因
你为paired_regions_app模块配置了for_each迭代逻辑,所以module.paired_regions_app不是单个模块实例对象,而是以迭代key(也就是paired_regions变量里的region1/region2)为键的模块实例集合,无法直接调用.website_hostname属性。
解决方案
根据你的使用场景选择对应写法即可:
场景1:每个network实例对应同区域的app实例(最常用)
两个模块的for_each逻辑完全一致,迭代key一一对应,直接用当前network实例的each.key匹配对应app实例即可:
application_hostname = [module.paired_regions_app[each.key].website_hostname]
场景2:需要传入所有区域的app hostname
用values函数提取所有app实例的hostname输出:
application_hostname = values(module.paired_regions_app)[*].website_hostname
场景3:仅需要传入指定区域的app hostname
直接指定迭代key取值即可,比如只取region1的hostname:
application_hostname = [module.paired_regions_app["region1"].website_hostname]
内容的提问来源于stack exchange,提问作者ccoutinho
相关产品推荐
相关产品推荐

