Terraform AWS Provider 数据源深度解析:aws_ec2_local_gateway_virtual_interface 查询 EC2 本地网关虚拟接口详情

发布时间:2026/9/18 6:41:25

Terraform AWS Provider 数据源深度解析:aws_ec2_local_gateway_virtual_interface 查询 EC2 本地网关虚拟接口详情 Terraform AWS Provider 数据源深度解析aws_ec2_local_gateway_virtual_interface 查询 EC2 本地网关虚拟接口详情【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws本文围绕 Terraform AWS Provider 的aws_ec2_local_gateway_virtual_interface数据源位于 EC2 / Outposts 子类目系统讲解其在 AWS Outposts 本地网络接入场景中的查询用法、过滤与标签匹配机制、全部参数与导出属性并结合仓库源码与验收测试剖析底层DescribeLocalGatewayVirtualInterfaces调用链与单结果约束。读完本文你将能在 Terraform 配置中通过 ID、filter 或 tags 三种方式精确检索本地网关虚拟接口Local Gateway Virtual Interface并与虚拟接口组、本地网关路由表资源联动完成网络编排。数据源是什么Outposts 网络组件中的虚拟接口在 AWS Outposts 环境中本地网关Local Gateway是 Outpost 上实例与本地数据中心网络通信的关键出口。本地网关与本地网络之间的连接通过Local Gateway Virtual Interface本地网关虚拟接口建立虚拟接口再归属于Local Gateway Virtual Interface Group虚拟接口组用于与本地网关路由表建立关联。aws_ec2_local_gateway_virtual_interface数据源的作用就是读取单个Local Gateway Virtual Interface 的详细信息供同一 Terraform 配置中的其他资源引用例如配置本地网关路由表时指定下一跳虚拟接口。数据源的完整实现位于 outposts_local_gateway_virtual_interface_data_source.go其官方文档位于 website/docs/d/ec2_local_gateway_virtual_interface.html.markdown。相关数据源与资源全景该数据源并不是孤立存在的围绕 Local Gateway 网络组件仓库中提供了一组配套的数据源与资源理解它们之间的关系有助于正确编排类型名称仓库文档路径数据源aws_ec2_local_gateways查询全部本地网关d/ec2_local_gateways.html.markdown数据源aws_ec2_local_gateway查询单个本地网关d/ec2_local_gateway.html.markdown数据源aws_ec2_local_gateway_virtual_interface_group查询单个虚拟接口组d/ec2_local_gateway_virtual_interface_group.html.markdown数据源aws_ec2_local_gateway_virtual_interface_groups查询全部虚拟接口组d/ec2_local_gateway_virtual_interface_groups.html.markdown数据源aws_ec2_local_gateway_virtual_interface本文主题查询单个虚拟接口d/ec2_local_gateway_virtual_interface.html.markdown资源aws_ec2_local_gateway_route本地网关路由r/ec2_local_gateway_route.html.markdown资源aws_ec2_local_gateway_route_table_virtual_interface_group_association路由表-虚拟接口组关联r/ec2_local_gateway_route_table_virtual_interface_group_association.html.markdown典型的数据流是aws_ec2_local_gateways→aws_ec2_local_gateway_virtual_interface_group拿到虚拟接口 ID 列表→aws_ec2_local_gateway_virtual_interface拿到单个虚拟接口详情。基础用法遍历虚拟接口组逐个查询虚拟接口官方文档给出的示例展示了最常见的用法——基于虚拟接口组数据源导出的 ID 集合配合for_each一次性查询组内所有虚拟接口data aws_ec2_local_gateway_virtual_interface example { for_each data.aws_ec2_local_gateway_virtual_interface_group.example.local_gateway_virtual_interface_ids id each.value }这里的data.aws_ec2_local_gateway_virtual_interface_group.example.local_gateway_virtual_interface_ids是虚拟接口组数据源导出的、类型为 set(string) 的虚拟接口 ID 集合其类型定义可见 outposts_local_gateway_virtual_interface_group_data_source.goschema.TypeSet元素为字符串。for_each展开后每个虚拟接口对应一个data.aws_ec2_local_gateway_virtual_interface.example[lgw-vif-xxx]实例可分别通过.id、.peer_address、.vlan等属性引用。三种精确查询方式id / filter / tags该数据源是一个“单例查询”数据源所有定位参数都是可选的但最终必须且只能匹配到一个虚拟接口否则会报错。仓库中的验收测试见 outposts_local_gateway_virtual_interface_data_source_test.go恰好覆盖了这三种定位方式可直接作为配置范本。方式一按 id 精确查询data aws_ec2_local_gateways test {} data aws_ec2_local_gateway_virtual_interface_group test { local_gateway_id tolist(data.aws_ec2_local_gateways.test.ids)[0] } data aws_ec2_local_gateway_virtual_interface test { id tolist(data.aws_ec2_local_gateway_virtual_interface_group.test.local_gateway_virtual_interface_ids)[0] }虚拟接口 ID 的格式为lgw-vif-前缀测试中通过正则^lgw-vif-校验见 测试用例第 28 行。方式二按 filter 过滤查询filter块支持基于 EC2DescribeLocalGatewayVirtualInterfacesAPI 支持的任意过滤条件进行查询data aws_ec2_local_gateways test {} data aws_ec2_local_gateway_virtual_interface_group test { local_gateway_id tolist(data.aws_ec2_local_gateways.test.ids)[0] } data aws_ec2_local_gateway_virtual_interface test { filter { name local-gateway-virtual-interface-id values [tolist(data.aws_ec2_local_gateway_virtual_interface_group.test.local_gateway_virtual_interface_ids)[0]] } }方式三按 tags 精确匹配查询可以通过标签定位虚拟接口标签的 key/value 必须与目标虚拟接口上的标签完全一致。测试用例先给虚拟接口打上测试标签再按标签查询见 测试用例第 130-153 行data aws_ec2_local_gateway_virtual_interface source { id tolist(data.aws_ec2_local_gateway_virtual_interface_group.test.local_gateway_virtual_interface_ids)[0] } resource aws_ec2_tag test { key TerraformAccTest-aws_ec2_local_gateway_virtual_interface resource_id data.aws_ec2_local_gateway_virtual_interface.source.id value test-value } data aws_ec2_local_gateway_virtual_interface test { tags { (aws_ec2_tag.test.key) aws_ec2_tag.test.value } }Argument Reference全部查询参数以下参数全部为可选数据源通过它们的组合来唯一定位一个虚拟接口参数类型说明regionstring该数据源所属的 AWS 区域。默认为 Provider 配置中设置的区域可用于跨区域查询。idstring目标 EC2 Local Gateway Virtual Interface 的标识符形如lgw-vif-xxx。filterblock set一个或多个 name-values 过滤块对应 EC2DescribeLocalGatewayVirtualInterfacesAPI 支持的过滤条件用于表达难以用标量属性表达的组合条件。tagsmap(string)标签键值映射每对标签都必须与目标虚拟接口上的标签完全匹配。filter 块内部参数filter是TypeSet类型的块集合其 Schema 定义见 filters.go每个块包含两个必填参数参数类型必填说明namestring是过滤条件名称例如local-gateway-virtual-interface-id。valuesset(string)是该过滤条件的一个或多个取值同一条件的多个值之间是“或”的关系。filter 与id、tags可以组合使用源码在构造 API 输入时会依次追加 ID 查询条件、tags 过滤条件与自定义 filter见 outposts_local_gateway_virtual_interface_data_source.go 第 91-106 行。Attribute Reference查询结果导出的属性查询成功后除了上述参数id、tags、region等会被回填为计算值数据源还会导出以下只读属性属性类型含义local_addressstring本地网关侧的 IP 地址CIDR 形式如10.0.0.1/30测试用正则^\d\.\d\.\d\.\d/\d$校验。local_bgp_asnint本地网关侧的 BGP 自治系统号ASN。local_gateway_idstring所属本地网关的标识符lgw-前缀。local_gateway_virtual_interface_group_idstring所属虚拟接口组的标识符。outpost_lag_idstring关联的 Outpost LAG链路聚合组标识符。peer_addressstring对端本地数据中心侧的 IP 地址CIDR 形式。peer_bgp_asnint对端的 BGP 自治系统号ASN。vlanint虚拟接口使用的 VLAN 编号。这些属性与 EC2 API 返回的LocalGatewayVirtualInterface结构体字段一一对应可在 outposts_local_gateway_virtual_interface_data_source.go 第 42-80 行 的 Schema 定义中核实。其中local_address/peer_address与两侧bgp_asn是配置本地网关路由、排查 BGP 邻居建立问题的关键信息。Timeouts读取超时配置该数据源支持在配置中显式覆盖操作超时data aws_ec2_local_gateway_virtual_interface example { # ...定位参数 timeouts { read 10m } }超时项默认值read20m默认值20m定义于源码的Timeouts字段见 outposts_local_gateway_virtual_interface_data_source.go 第 30-32 行。底层实现原理从 Terraform 配置到 EC2 API该数据源的实现路径清晰地展示了 AWS Provider 数据源的标准架构核心读取函数为dataSourceLocalGatewayVirtualInterfaceRead见 outposts_local_gateway_virtual_interface_data_source.go 第 85-127 行构造输入初始化ec2.DescribeLocalGatewayVirtualInterfacesInput若配置了id则填充LocalGatewayVirtualInterfaceIds切片第 91-93 行。合并过滤条件将配置的tags与filter分别转换为 EC2 Filter 列表并追加到输入第 95-101 行若最终过滤列表为空则置为nil因为 EC2 API 不接受空过滤列表第 103-106 行。调用查询函数调用findLocalGatewayVirtualInterface其内部先通过findLocalGatewayVirtualInterfaces使用官方分页器NewDescribeLocalGatewayVirtualInterfacesPaginator遍历所有分页结果见 find.go 第 1099-1124 行再经tfresource.AssertSingleValueResult强制校验结果唯一性。单结果约束如果匹配结果不是恰好一个tfresource.SingularDataSourceFindError会生成明确报错提示“找到了 0 个或多个 EC2 Local Gateway Virtual Interface”第 108-112 行这正是要求id/filter/tags必须唯一定位的原因。写入状态以虚拟接口 ID 作为数据源的id并将其余属性逐一d.Set写入 Terraform 状态标签通过setTagsOut导出第 114-124 行。实战联动虚拟接口、路由表与本地网关路由编排将本文数据源与同仓库的本地网关路由资源组合即可构建一条从 Outposts 本地网络到本地网关的完整数据面配置。典型编排如下data aws_ec2_local_gateway_virtual_interface_group example { local_gateway_id data.aws_ec2_local_gateway.example.id } data aws_ec2_local_gateway_virtual_interface example { for_each data.aws_ec2_local_gateway_virtual_interface_group.example.local_gateway_virtual_interface_ids id each.value } # 将虚拟接口组关联到本地网关路由表对应 aws_ec2_local_gateway_route_table_virtual_interface_group_association # 再将查询到的虚拟接口地址用于 aws_ec2_local_gateway_route 的路由配置其中aws_ec2_local_gateway_route与关联资源的完整参数说明可分别参考 r/ec2_local_gateway_route.html.markdown 与 r/ec2_local_gateway_route_table_virtual_interface_group_association.html.markdown。测试与验证数据源行为的质量保障仓库为每个数据源维护了配套的验收测试本数据源的测试位于 outposts_local_gateway_virtual_interface_data_source_test.go覆盖三种定位路径TestAccEC2OutpostsLocalGatewayVirtualInterfaceDataSource_filter按local-gateway-virtual-interface-idfilter 查询并校验id、local_address、local_bgp_asn、local_gateway_id、peer_address、peer_bgp_asn、vlan等全部核心属性的格式第 16-41 行。TestAccEC2OutpostsLocalGatewayVirtualInterfaceDataSource_id按id查询第 43-68 行。TestAccEC2OutpostsLocalGatewayVirtualInterfaceDataSource_tags先写入标签再按 tags 查询并通过TestCheckResourceAttrPair逐一比对 source 与 test 两个数据源的导出属性第 70-97 行。所有测试均在PreCheck中调用acctest.PreCheckOutpostsOutposts即测试运行环境必须真实存在 Outposts 资源本地网关、虚拟接口组等这是该数据源使用前提的有力佐证——它只适用于已部署 Outposts 并与本地网络完成虚拟接口配置的账户。使用注意事项小结结果必须唯一该数据源是单例查询id、filter、tags组合后若匹配到 0 个或多个结果都会直接报错不确定唯一性时可先用aws_ec2_local_gateway_virtual_interface_group或aws_ec2_local_gateway_virtual_interface_groups后者查询全部定位 ID再精确查询。依赖 Outposts 环境未部署 Outposts 的普通 AWS 区域不存在本地网关与虚拟接口查询会失败。超时可按需覆盖默认read超时为 20 分钟常规查询远快于此仅当 API 侧异常时才会触及。跨区域查询可通过region参数指定目标区域否则使用 Provider 配置的默认区域。【免费下载链接】terraform-provider-awsThe AWS Provider enables Terraform to manage AWS resources.项目地址: https://gitcode.com/GitHub_Trending/te/terraform-provider-aws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/18 6:41:25

银河麒麟 V10 软件源配置:内网源、ISO 离线源与排错

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 7:41:27

3ds Max真实能力成长路径:从操作到项目交付的五层跃迁

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 7:41:27

STM32F407上FreeRTOS+LwIP稳定移植的7个关键实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/18 7:41:27

论文降AI率工具对比与学术写作优化实践

1. 论文降AI率工具的市场需求去年帮导师审研究生论文时发现一个现象:超过60%的初稿都存在明显的AI写作痕迹。最典型的特征是段落结构过于工整、术语堆砌但缺乏逻辑衔接、参考文献格式整齐得不像人工整理。这让我意识到,随着AI写作工具的普及,…

2026/9/18 7:41:27

完整重复文件清理神器 Czkawka:给硬盘瘦身

完整重复文件清理神器 Czkawka:给硬盘瘦身 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 年度手机备份之后,你发现照片库里…

2026/9/18 7:36:27

Linux入门指南:从虚拟机搭建到终端命令实战

1. Linux系统初探:从零开始的数字世界漫步第一次接触Linux时,我被终端里闪烁的光标和神秘的命令行震撼了。这个诞生于1991年的开源操作系统,如今已渗透到我们数字生活的每个角落——从智能手机到超级计算机,从智能家电到金融交易系…

2026/9/16 12:52:37

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/18 0:01:09

Google Colab 实战:运行模型、数据加载与报错排查

1. 为什么我劝你先搞懂 Colab 的运行模型1.1 Colab 到底是什么,跟本地跑代码差在哪Google Colab 简单说就是一台跑在浏览器里的 Linux 虚拟机,你打开一个 Notebook,背后就连上了一台带 GPU 的远程机器。你在单元格里敲的每一行 Python&#x…

2026/9/18 0:01:09

C语言数据类型与表达式详解

1. C语言数据与数据类型概述在C语言编程中,数据是程序处理的核心对象。理解数据的分类和特性是掌握C语言的基础。C语言中的数据主要分为四大类:常量、变量、表达式和函数。这些数据类型构成了C语言程序的基本元素,每种类型都有其独特的特性和…

2026/9/18 0:01:09

SQL时间字段指定时间段查询:区间语义、索引与时区避坑

上周排查一个线上问题&#xff0c;用户反馈"昨天的订单一条都没查到"&#xff0c;但数据库里明明躺着两千多条。最后定位下来&#xff0c;不是数据丢了&#xff0c;也不是接口挂了&#xff0c;而是那个查询条件把时间段写成了> 2024-05-20 00:00:00 AND < 2024…

2026/9/16 22:55:57

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/16 22:56:09

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/16 22:56:16

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码