You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Terraform中从Lambda模块数组提取属性生成函数名称数组?

解决方案

这问题我太熟了!在Terraform里批量提取列表中每个元素的指定属性,用for表达式就能完美解决,完全不用手动逐个拼接。

假设你原本的lambda_functions是定义在变量或者本地值里的,只需要通过下面的方式生成目标列表:

情况1:如果lambda_functions是变量(var)

locals {
  # 生成只包含函数名的新列表
  lambda_function_names = [for lambda in var.lambda_functions : lambda.this_lambda_function_name]
}

情况2:如果lambda_functions是本地值(local)

如果你的原列表是直接定义在locals里的,那代码可以写成这样:

locals {
  lambda_functions = [module.lambda1, module.lambda2, module.lambda3, module.lambda4]
  
  # 自动提取每个模块的函数名
  lambda_function_names = [for lambda in local.lambda_functions : lambda.this_lambda_function_name]
}

原理说明

  • for lambda in ... 会遍历原列表中的每一个lambda模块实例
  • lambda.this_lambda_function_name 会取出当前模块实例的this_lambda_function_name属性
  • 整个表达式最终会返回一个新的数组,格式完全符合你的需求:[module.lambda1.this_lambda_function_name, module.lambda2.this_lambda_function_name, ...]

之后你就可以通过local.lambda_function_names来引用这个新列表,而且后续如果要新增lambda模块,只要在原lambda_functions列表里添加,新列表会自动同步更新,非常省心!

内容的提问来源于stack exchange,提问作者onkami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 14:58:10