如何在Terraform中遍历值为列表的字典dataset_bindings并提取所有邮箱地址为字符串
Terraform: 遍历字典提取所有邮箱地址并转为字符串
嘿,我来帮你搞定这个需求!要遍历你的dataset_bindings字典并提取所有邮箱地址,用Terraform内置的几个函数组合就能轻松实现,步骤很简单:
实现步骤与代码示例
首先,我们可以通过本地值(或变量)定义你的字典,然后用函数链完成处理:
locals { # 你的原始字典结构 dataset_bindings = { "infra" = ["group:infra-team@xxxx.com"] "finance" = ["group:finance-data@xxx.com"] "marketing" = ["group:marketing@xxx.com"] } # 第一步:提取所有列表值并拍平为一维列表 all_email_list = flatten(values(local.dataset_bindings)) # 第二步:将列表转为指定分隔符的字符串(这里用逗号+空格) all_email_string = join(", ", local.all_email_list) }
关键函数拆解
我来解释下用到的几个核心函数:
values(local.dataset_bindings):获取字典里的所有值,返回的是嵌套列表结构:[["group:infra-team@xxxx.com"], ["group:finance-data@xxx.com"], ["group:marketing@xxx.com"]]flatten(...):把嵌套的列表展开成一维列表,结果变成:["group:infra-team@xxxx.com", "group:finance-data@xxx.com", "group:marketing@xxx.com"]join(", ", ...):把列表中的元素用你指定的分隔符拼接成单个字符串,这里用逗号加空格,最终就能得到你需要的邮箱字符串形式。
验证输出结果
如果想确认处理后的结果是否正确,可以添加一个输出块:
output "all_emails_result" { value = local.all_email_string }
执行terraform apply后,就能在控制台看到最终的邮箱字符串啦。
内容的提问来源于stack exchange,提问作者anu
相关产品推荐
相关产品推荐

