List 如何迭代terraform局部变量中的对象列表
基本上,我们正在尝试使用terraform 0.13.5创建cloudwatch仪表板,我们的要求是将2变量传递给小部件块,即${function\u name}和${title}。这将作为对象变量传递 错误:模板插值值无效 无法在字符串模板中包含给定值:字符串必需 代码如下:List 如何迭代terraform局部变量中的对象列表,list,for-loop,object,foreach,terraform,List,For Loop,Object,Foreach,Terraform,基本上,我们正在尝试使用terraform 0.13.5创建cloudwatch仪表板,我们的要求是将2变量传递给小部件块,即${function\u name}和${title}。这将作为对象变量传递 错误:模板插值值无效 无法在字符串模板中包含给定值:字符串必需 代码如下: locals{ lambda = [ { function_name = "lambda1" title = "Err
locals{
lambda = [
{
function_name = "lambda1"
title = "Error"
},
{
function_name = "lambda1"
title = "Error1"
}
]
widget_defination = <<EOT
%{ for function_name , title in local.lambda}
[
{
"type": "metric",
"x": 0,
"y": 0,
"width": 12,
"height": 6,
"properties": {
"metrics": [
[
"AWS/EC2",
"CPUUtilization",
"FunctionName",
"${funtion_name}"
]
],
"period": 300,
"stat": "Average",
"region": "us-east-1",
"title": "${title}"
}
}
]
}
%{endfor }
EOT
}
本地人{
λ=[
{
函数\u name=“lambda1”
title=“错误”
},
{
函数\u name=“lambda1”
title=“Error1”
}
]
widget_defination=Gotcha
我们需要在小部件中调用对象,比如-
${function\u name.function\u name}和
${function\u name.title}据我所知,在terraform中使用变量不是这种方式。
您必须在自己的文件中声明变量和类型,并在不同的文件中或作为资源创建的结果分配它们的值
你说的是小部件,所以我不确定你是否已经知道,因为我以前从未使用过小部件。但是如果你需要帮助,我不介意尝试
变量.tf
变量“项目名称”{
类型=字符串
}
变量“vpc_id”{}
...
terraform.tfvars
project\u name=“我的项目”
vpc_id=“vpc-10101010”
...
如何将其放入模板取决于您。
我建议使用一种简单的方法,比如bash,但是IDK可能会让小部件变得有趣
这里有点编辑,因为我刚看到你的“抓住你了”迟到..是的,不要混合变量和字符串..你应该投票支持你自己的答案:D我被指派审查/改进你的问题,但我担心我们在这里会有分歧,所以我会尝试给你一个答案。是的,我同意你的意见,因为这是针对我在这里的用例的。如果有人尝试这种方式,请发帖子。:)