【发布时间】:2020-08-05 20:12:04
【问题描述】:
我正在使用 Terraform 调用 lambda 函数,并且需要传递一个包含字符串值列表的输入 JSON。
data "aws_lambda_invocation" "invo6" {
function_name = "my_function"
input = <<JSON
{
"pairs":[
{
"principal":"arn:aws:iam::12345678901:role/myRole",
"databases":[
"my_db_apple", "my_db_banana", "my_db_orange"
]
}
]
}
JSON
}
我不想对这些数据库名称进行硬编码,而是想从我的 tf 文件中其他地方已经存在的映射中提取。
variable "gluedb_map" {
type = map(map(string))
default = {
"apple" = {
description = "my apple db"
catalog = ""
location_uri = "s3://mybucket/"
params = ""
}
"banana" = {
description = "my banana db"
catalog = ""
location_uri = "s3://anotherpath/"
params = ""
}
我尝试为此更换“数据库”代码:
input = <<JSON
{
"pairs":[
{
"principal":"arn:aws:iam::12345678901:role/myRole",
${jsonencode("databases": [for each in var.gluedb_map : "my_db_${each}"], )}
}
]
}
JSON
但我得到错误: 需要用逗号将每个函数参数与下一个函数参数分开。
谁能发现我哪里出错了? 谢谢
【问题讨论】:
-
您可以编辑您的问题以显示示例输入,然后显示您期望从该输入获得的输出吗?
-
添加了包含数据库名称的地图的详细信息。还扩展了我失败代码的代码。所需的输出是第一个代码部分,我在其中对数据库名称进行了硬编码 - 我正在尝试重新创建它,但从地图而不是硬编码中填充。希望更清楚?
标签: terraform