我想将一个包含2个对象的列表作为数组变量传递给lambda_name,lambda_name必须接收my_app和my_app_2密钥名。例如:
variable "lambda" {
type = object({
my_app = object({
name = string
})
my_app_2 = object({
name = string
})
})
description = "Lambda Function required values"
}
data "external" "lambdas" {
program = ["bash", "scripts/random.sh"]
query = {
lambda_name = (["${var.lambda.my_app.name}", "${var.lambda.my_app_2.name}"])
environment = var.environment
}
}
我得到的错误:
属性"的值不合适;查询":元素";lambda_name":需要字符串。
解决方案:
data "external" "lambdas" {
program = ["bash", "scripts/random.sh"]
query = {
lambda_name = "${var.lambda.my_app.name} ${var.lambda.my_app_2.name}"
environment = var.environment
}
}
在scripts/random.sh上,我使用lambda_name作为数组变量。
#!/bin/bash
set -e
eval "$(jq -r '@sh "export LAMBDA_NAME=(.lambda_name)"')"
for lambda in ${LAMBDA_NAME[@]}; do echo $lambda; done