如何在python_terraform的variables参数中正确传入列表变量
python_terraform 传入列表类型变量的正确写法
问题根因
直接将未做类型统一的Python列表传入variables参数时,会因为两个问题导致传参失效:
- 库本身支持自动序列化Python列表为Terraform可识别的HCL格式值,但如果列表内元素类型和Terraform侧定义的变量类型不匹配,会触发传参校验失败
- 手动拼接非规范的HCL字符串传值时,容易出现转义错误,导致变量值不被Terraform正确识别
可直接复用的正确传参语法
- 常规场景推荐:保持列表元素类型和Terraform侧变量定义完全一致,直接传入Python原生列表即可,无需手动转字符串
对应你代码的修正片段:from python_terraform import * acc_id = "888888888888" # 统一将所有账户ID转为字符串,和Terraform中list(string)的变量定义对齐 managed_account_list = [str(555555555555), str(222222222222), acc_id] tf = Terraform( working_dir='/{0}/aws-organization/organizations/terraform/account_global'.format(cwd), variables={ 'managed_accounts': managed_account_list } ) - 特殊场景兜底:如果自动序列化遇到嵌套列表、特殊字符转义问题,可以直接传入符合HCL格式的列表字面量字符串
示例写法:variables={ 'managed_accounts': '["555555555555", "222222222222", "888888888888"]' }
你当前代码的可优化点
- 原代码中
managed_account_list混合了整型、字符串型的账户ID,是最可能导致运行不符合预期的原因,要先和Terraform侧的变量类型定义做对齐 - 不需要对Python列表做额外的引号包裹、转义拼接,只要元素类型匹配,直接传原生列表即可被库正确解析
- 初始化Terraform实例时传入的
variables参数会自动被后续的plan、apply操作继承,不需要重复在每个方法里传参
内容的提问来源于stack exchange,提问作者chris
相关产品推荐
相关产品推荐

