You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过TF_VAR环境变量向Terraform传递list of objects类型变量?

解决Terraform环境变量传递list of objects类型变量的问题

当通过环境变量传递Terraform的list(object)类型变量时,核心要求是传递严格合法的JSON字符串,同时确保shell正确传递该字符串,避免被识别为普通字符串。

问题根源

你之前的命令里,JSON末尾多了一个多余的逗号(,]),不符合严格JSON语法;且即使语法正确,若shell传递方式不当,Terraform会将整个值识别为字符串,而非自动解析为list(object)类型。

正确传递方法

1. 修正JSON格式

首先去掉JSON末尾的多余逗号,得到合法的JSON:
[{"container_access_type":"private","metadata":{},"name":"20220912-001"}]

2. 根据Shell环境执行导出命令

  • Bash/Zsh 环境:
    用单引号包裹合法JSON(内部无单引号时推荐):

    export TF_VAR_containers='[{"container_access_type":"private","metadata":{},"name":"20220912-001"}]'
    

    若JSON包含单引号,改用双引号包裹并转义内部双引号:

    export TF_VAR_containers="{\"container_access_type\":\"private\",\"metadata\":{},\"name\":\"20220912-001\"}"
    
  • Fish Shell 环境:
    使用set -x命令,双引号包裹并转义内部双引号:

    set -x TF_VAR_containers "{\"container_access_type\":\"private\",\"metadata\":{},\"name\":\"20220912-001\"}"
    

验证变量类型

执行上述命令后,可通过terraform console验证:
在控制台中输入var.containers,若输出为符合预期的列表对象结构,说明传递成功。

内容的提问来源于stack exchange,提问作者Lorenzo Iuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 18:30:59