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),仅供参考

相关新闻

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

银河麒麟 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 6:41:21 阅读更多 →
Context7 MCP 服务端部署与使用全指南:为 LLM 与 AI 编程助手注入最新版代码文档

Context7 MCP 服务端部署与使用全指南:为 LLM 与 AI 编程助手注入最新版代码文档

Context7 MCP 服务端部署与使用全指南:为 LLM 与 AI 编程助手注入最新版代码文档 【免费下载链接】context7 Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors 项目地址: https://gitcode.com/gh_mirrors/co/context7 本篇…

2026/9/18 6:41:21 阅读更多 →
FPGA实现UDP以太网通信:从verilog-ethernet开源工程到上板回环实战

FPGA实现UDP以太网通信:从verilog-ethernet开源工程到上板回环实战

/* 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 6:41:21 阅读更多 →

最新新闻

基于云函数的安全巡检上报小程序

基于云函数的安全巡检上报小程序

企业级巡检隐患管理系统:基于微信小程序云开发的智能解决方案 项目概述 这是一个基于微信小程序云开发技术构建的企业级巡检和隐患上报管理系统,专为工厂车间、仓库货物、企业管道阀门、制造车间、施工现场、塔吊升降机、施工围挡、高速公路、铁路设备、…

2026/9/18 7:23:30 阅读更多 →
AI工具免费与付费版的五大隐性成本差异

AI工具免费与付费版的五大隐性成本差异

1. 工具选择背后的真实成本考量第一次接触AI工具的新手常会陷入一个经典误区:认为免费工具和付费工具的主要区别只是价格标签不同。但实际使用三个月后,我发现真正的差异藏在五个隐形维度里:计算资源配额:某知名免费工具在连续使用…

2026/9/18 7:23:30 阅读更多 →
智能体技术:从语义理解到自主行动的三大突破

智能体技术:从语义理解到自主行动的三大突破

1. 从对话到行动:智能体技术的范式跃迁记得2016年第一次体验聊天机器人时,那种机械的问答交互让人明显感觉到人工智能的局限性。八年后的今天,当我用自然语言指令让智能体自动完成数据分析报告、调整智能家居参数甚至协调团队日程时&#xff…

2026/9/18 7:23:30 阅读更多 →
代码评审自动化实践:用规则引擎和Webhook打造高效Code Review机器人

代码评审自动化实践:用规则引擎和Webhook打造高效Code Review机器人

1. 代码评审这件"例行公事",为什么越做越敷衍先说一个我在好几支团队里都观察到的现象:代码评审(Code Review)明明被写进了研发流程,Git上面也挂着"必须一人review通过才能合并"的保护分支&#x…

2026/9/18 7:23:30 阅读更多 →
Front-End-Checklist 无障碍规则深度解析:确保 ARIA 角色包含在必需的父级角色中

Front-End-Checklist 无障碍规则深度解析:确保 ARIA 角色包含在必需的父级角色中

Front-End-Checklist 无障碍规则深度解析:确保 ARIA 角色包含在必需的父级角色中 【免费下载链接】Front-End-Checklist 🗂 The essential checklist for modern web development, for humans and AI agents 项目地址: https://gitcode.com/gh_mirrors…

2026/9/18 7:23:30 阅读更多 →
DeepCast:基于 Hello-Agents 打造从深度研究到双人播客的全自动智能体引擎

DeepCast:基于 Hello-Agents 打造从深度研究到双人播客的全自动智能体引擎

DeepCast:基于 Hello-Agents 打造从深度研究到双人播客的全自动智能体引擎 【免费下载链接】hello-agents 📚 《从零开始构建智能体》——从零开始的智能体原理与实践教程 项目地址: https://gitcode.com/datawhalechina/hello-agents 本文以 Co-c…

2026/9/18 7:22:28 阅读更多 →

日新闻

Matlab手写逻辑回归:从数学原理到多变量概率预测模型实现

Matlab手写逻辑回归:从数学原理到多变量概率预测模型实现

很多朋友第一次看到"逻辑回归"这四个字,第一反应就是——这玩意儿是个回归模型吧?我当年也是在Matlab里跑完一段代码,看着输出的0.73、0.86这种概率值,才回过神来:这家伙其实是披着回归外衣的分类神器&#…

2026/9/18 0:00:28 阅读更多 →
高值医用耗材研报PDF:用Python完成字段抽取、清洗与趋势预测

高值医用耗材研报PDF:用Python完成字段抽取、清洗与趋势预测

简介:这份报告是2023-2028年高值医用耗材行业调研及发展前景趋势预测报告,面向医疗器械企业管理者、投资机构、行业研究人员及关注政策变化的从业者,用于把握行业监管动向、市场格局与未来趋势。报告以PDF格式呈现,共1个文件、整体…

2026/9/18 0:00:28 阅读更多 →
三维高斯场赋能世界模型:几何语义蒸馏与机器人决策实战

三维高斯场赋能世界模型:几何语义蒸馏与机器人决策实战

先把我自己的背景交代一下:我之前在搞具身智能和机器人导航相关的项目,很长一段时间里都被“环境表示”这件事卡着。传统做法是用点云或者网格做几何建模,语义信息另外再跑分割模型,两套东西各管各的,时间一长就会发现…

2026/9/18 0:00:28 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/16 19:03:19 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/17 7:57:36 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/17 10:19:14 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →