Terraform:为什么不接受扩展运营商?
背景:我想创建一些Lambda函数,其中一些使用相同的本地文件。我想将本地文件复制到多个目标构建目录中,这些目录最终将被压缩 给定定义lambdas相关配置的以下变量:Terraform:为什么不接受扩展运营商?,terraform,Terraform,背景:我想创建一些Lambda函数,其中一些使用相同的本地文件。我想将本地文件复制到多个目标构建目录中,这些目录最终将被压缩 给定定义lambdas相关配置的以下变量: locals { related_lambdas = { lambda_a = { build_dir = "dir_a" src_files = ["file_a", "file_b"] } lambda_b = { build_dir = "dir_b"
locals {
related_lambdas = {
lambda_a = {
build_dir = "dir_a"
src_files = ["file_a", "file_b"]
}
lambda_b = {
build_dir = "dir_b"
src_files = ["file_a", "file_b"]
}
}
other_lambda = {
build_dir = "dir_c"
src_files = ["file_c"]
}
lambdas = tomap(merge(local.related_lambdas, { other_lambda = local.other_lambda }))
}
我相信上面的内容会使local.lambda
成为一个带有3个键的地图lambda\u a
,lambda\u b
和其他lambda
我想使用该资源创建以下目录结构:
../build/
dir_a/
file_a
file_b
dir_b/
file_a
file_b
dir_c/
file_c
我对每个循环使用:
resource "local_file" "copy_lambda_files_to_build_dir" {
for_each = merge(
tolist([
for k, v in local.lambdas:
tomap({ for f in v.src_files: format("%s/%s", v.build_dir, basename(f)) => f })
])...
)
}
但是,我得到一个错误:
The expanding argument (indicated by ...) must be of a tuple, list, or set
type.
怎么了?我认为for_each
循环应该采用local.lambdas
的每个元素,并为该元素中的每个源文件创建一个映射,返回一个映射元组。我显式地将该元组转换为映射列表,这些映射通过..
展开并传递到merge()