Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 如何迭代terraform局部变量中的对象列表_List_For Loop_Object_Foreach_Terraform - Fatal编程技术网

List 如何迭代terraform局部变量中的对象列表

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

基本上,我们正在尝试使用terraform 0.13.5创建cloudwatch仪表板,我们的要求是将2变量传递给小部件块,即${function\u name}和${title}。这将作为对象变量传递

错误:模板插值值无效 无法在字符串模板中包含给定值:字符串必需

代码如下:

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

我被指派审查/改进你的问题,但我担心我们在这里会有分歧,所以我会尝试给你一个答案。是的,我同意你的意见,因为这是针对我在这里的用例的。如果有人尝试这种方式,请发帖子。:)