查询多个Transit Gateway对等连接附件时Terraform报错求助
Terraform查询多个Transit Gateway对等连接附件报错的解决方案
问题原因
aws_ec2_transit_gateway_attachment数据源默认要求过滤条件匹配单个Transit Gateway附件,当你的查询条件匹配到多个附件时,就会触发你看到的报错。
解决方案
方案1:获取所有匹配的附件(使用复数数据源)
如果你需要获取所有符合条件的对等连接附件,改用专门支持多结果的aws_ec2_transit_gateway_attachments(复数形式)数据源:
data "aws_ec2_transit_gateway_attachments" "example" { filter { name = "state" values = ["pendingAcceptance","available"] } filter { name = "transit-gateway-id" values = ["<Transit_gateway_id>"] } }
使用时可以通过以下方式访问结果:
- 获取所有附件ID列表:
data.aws_ec2_transit_gateway_attachments.example.ids - 遍历单个附件属性(比如第一个附件的状态):
data.aws_ec2_transit_gateway_attachments.example.attachments[0].state
方案2:缩小过滤范围到单个附件
如果你只需要特定的一个对等连接附件,添加更精确的过滤条件:
- 过滤附件类型为对等连接(
peering) - 或者指定目标对等网关ID
示例代码:
data "aws_ec2_transit_gateway_attachment" "example" { filter { name = "state" values = ["pendingAcceptance","available"] } filter { name = "transit-gateway-id" values = ["<Transit_gateway_id>"] } # 过滤对等连接类型 filter { name = "attachment-type" values = ["peering"] } # 可选:指定特定的对等网关ID filter { name = "peer-transit-gateway-id" values = ["<Peer_Transit_gateway_id>"] } }
这样就能确保过滤条件只匹配单个附件,解决报错问题。
内容的提问来源于stack exchange,提问作者Jai
相关产品推荐
相关产品推荐

