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

使用AzureRM Provider读取Terraform远程状态时子网ID解析异常

解决Terraform读取远程状态子网ID时被解析为日期的错误

我一眼就看出问题所在了——你在读取远程状态的时候,访问属性的方式错了!

问题根源

data.terraform_remote_state.sub.id 并不是你定义的子网ID输出值,而是这个远程状态数据源本身的内置id属性,它的值其实是状态的最后更新时间戳(也就是你错误日志里看到的2019-04-09 15:21:55.916021 +0000 UTC),这也就是为什么系统会把它当成日期格式解析,进而报错无法识别为Azure资源ID。

你在第一个模块里定义的输出值,是存储在远程状态的outputs字段下的,必须通过outputs路径才能正确访问到。

修正后的代码

把读取子网ID的代码改成下面这样:

data "terraform_remote_state" "sub" {
  backend = "azurerm"
  config = {
    storage_account_name = "mystorage"
    container_name = "tfstate"
    key = "terraform.tfstate"
  }
}

resource "azurerm_kubernetes_cluster" "aks" {
  # 其他配置保持不变
  agent_pool_profile {
    # Terraform 0.12+ 推荐直接属性访问
    vnet_subnet_id = data.terraform_remote_state.sub.outputs.id
    # 如果是更老的Terraform版本,也可以用插值语法:"${data.terraform_remote_state.sub.outputs.id}"
  }
}

额外说明

  • 你之前存储子网ID的模块配置完全正确,远程状态里的输出内容也没问题,问题就出在读取时的属性路径错误。
  • 如果使用Terraform 0.12及以上版本,建议使用直接属性访问的写法,不用包裹插值语法的引号,代码更简洁易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:51:46