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

Terraform 11.15使用aws_route_tables创建TGW路由出现解析错误问询

错误原因

  1. 语法兼容性问题:你使用的Terraform 0.11版本不支持tolist(xxx)[index]这种方括号直接索引列表的写法,该特性是Terraform 0.12及以上版本才支持的,所以解析配置时会抛出符号不匹配的错误。
  2. 资源数量不匹配:当前aws_route资源的count值固定为1,就算语法修复后也只能为1个路由表添加路由,无法满足你给所有查询到的路由表批量配置路由的需求。
  3. 数据源引用错误:aws_vpc数据源配置了count参数,返回结果是列表类型,你在aws_route_tables中直接引用data.aws_vpc.vpc_id.id会报错,需要指定索引取第一个实例的ID。

修复方案

调整两处配置即可:

  1. 修正aws_route_tables数据源的VPC ID引用
  2. 替换aws_route的索引写法为0.11支持的element()函数,同时调整count值匹配路由表数量

修复后完整核心配置

variable "environment_group" {
  description = "Name given to the resource"
  default = "test"
}

variable "create_tgw_route" {
  description = "Toggle to create the transit gateway route within the VPC route table"
  default = true
}

variable "tgw_route_cidr" {
  description = "Specify the destination cidr block for the transit gateway route within the VPC route table"
  default = "10.0.0.0/8"
}

variable "transit_gateway_id" {
  default = ""
  description = "Temporary variable that should be replaced by a data lookup in due time"
}

data "aws_vpc" "vpc_id" {
  count = "${var.create_tgw_route ? 1 : 0}"

  filter {
    name   = "tag:Name"
    values = ["vpc-${var.environment_group}"]
  }
}

data "aws_route_tables" "rtb" {
  count = "${var.create_tgw_route ? 1 : 0}"

  # 修正vpc id引用,加[0]取第一个实例的属性
  vpc_id = "${data.aws_vpc.vpc_id[0].id}"

  filter {
    name   = "tag:Name"
    values = ["rt-${var.environment_group}-*"]
  }
}

resource "aws_route" "rt_tgw" {
  # count匹配路由表数量,实现批量配置
  count = "${var.create_tgw_route ? length(data.aws_route_tables.rtb.ids) : 0}"

  # 用element函数实现列表索引,兼容0.11语法
  route_table_id            = "${element(data.aws_route_tables.rtb.ids, count.index)}"
  destination_cidr_block    = "${var.tgw_route_cidr}"
  transit_gateway_id        = "${var.transit_gateway_id}"
}

注意事项

配置前请确认var.transit_gateway_id已经赋值为有效的transit gateway ID,为空会导致资源创建失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:39:03