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

Terraform使用插值时无法读取远程状态安全组ID问题

问题原因

第二种写法报错的核心原因是写法逻辑错误,和参数类型无关:

  • 你把完整的远程状态数据源引用整体放在了双引号内,Terraform会将双引号包裹的内容识别为普通字符串,仅会解析${}包裹的局部变量片段,其余文本会原样输出,根本不会去读取远程状态里的对应属性值
  • 最终传给security_group_ids的是形如data.terraform_remote_state.sg.outputs.sg_paris_id的纯文本,自然不符合安全组ID以sg-开头的格式要求,用toset()做类型转换只是把错误的字符串值包装成了集合,值本身不合法当然不会解决问题。
正确复用写法

不需要把整个引用放在引号里,通过output映射的动态键取值即可,单模块即可适配不同城市的配置,无需重复编写模块:

security_group_ids = [data.terraform_remote_state.sg.outputs["sg_${local.city}_id"]]

该写法会先拼接出目标安全组对应的output键名,再从远程状态输出中读取真实的安全组ID值,和你第一种硬编码写法的执行效果完全一致。

版本适配说明

你当前使用的Terraform 0.12.28、Terragrunt 0.23.24版本原生支持上述动态键取值语法,无需升级版本即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 00:21:40