使用 Terraform 演示 AWS 中 VPC Peering 的小型项目

发布: (2025年12月16日 GMT+8 16:58)
4 min read
原文: Dev.to

Source: Dev.to

Nandan K

✅ 什么是 VPC Peering?

VPC Peering 是两个虚拟私有云(VPC)之间的网络连接,使它们能够像在同一网络中一样进行私有 IP 通信。

VPC Peering Diagram

架构

Architecture Diagram

✅ 在此演示中我们创建

✨ 网络

  1. 两个 VPC —— 一个在 us‑east‑1,一个在 us‑west‑2
  2. 每个 VPC 中各一个公共子网
  3. 每个 VPC 的互联网网关(用于访问互联网)
  4. 自定义路由表,包含指向互联网和对等 VPC 的路由
  5. 两个 VPC 之间的 跨区域 VPC 对等连接

✨ 计算资源

  • 每个 VPC 中各一个 EC2 实例

✨ 安全组

  1. 来自任意位置的 SSH 访问(端口 22)
  2. 允许来自对等 VPC 的 ICMP(ping)
  3. 允许 VPC 之间的所有 TCP 流量

Source:

💡 详细实现步骤

📌 步骤 1 – 前置条件

  • 已安装 AWS CLI
  • 已安装 Terraform
  • 使用 aws configure 配置 AWS 凭证

📌 步骤 2 – 在每个区域创建 SSH 密钥对

# us-east-1
aws ec2 create-key-pair \
  --key-name vpc-peering-demo-east \
  --region us-east-1 \
  --query 'KeyMaterial' \
  --output text > vpc-peering-demo-east.pem

# us-west-2
aws ec2 create-key-pair \
  --key-name vpc-peering-demo-west \
  --region us-west-2 \
  --query 'KeyMaterial' \
  --output text > vpc-peering-demo-west.pem

main.tf 文件

(完整的 main.tf 为简洁起见已省略;它定义了 provider、VPC、子网、IGW、路由表、对等连接、EC2 实例和安全组。)

📌 步骤 3 – 部署主 VPC 与次 VPC

VPC provisioning

📌 步骤 4 – 创建公有子网

Public subnets

📌 步骤 5 – 挂载 Internet Gateway

Internet Gateways

📌 步骤 6 – 创建自定义路由表

Route tables – part 1

Route tables – part 2

📌 步骤 7 – 创建 VPC 对等连接

VPC peering connection

(后续步骤——路由表更新、安全组规则以及 EC2 实例的创建——遵循相同模式,已包含在完整的 Terraform 配置中。)

结果:
两个 VPC 已在不同区域完成对等,EC2 实例可以通过私有 IP 安全通信,同时仍可通过各自的 Internet Gateway 访问互联网。此方案演示了使用 Terraform 在 AWS 中实现跨区域网络的简洁方法。

📌 步骤 8 – 添加路由

两个 VPC 的路由表 中都添加了指向对等 VPC CIDR 的路由,路由通过对等连接转发,实现双向的私有 IP 通信。

VPC route tables configuration

相同的路由配置也必须从次 VPC 应用到主 VPC。

📌 步骤 9 – 安全组

在每个 VPC 中定义了安全组,以允许 SSH 管理访问。并在 VPC CIDR 范围之间放行 ICMP 和 TCP 流量,以验证连通性。

Image描述
Security group – inbound rulesSSH、ICMP 与 TCP 规则
Security group – outbound rules同上,出站规则

Source:

必须对辅助 VPC 应用相同的安全组配置。

📌 步骤 10 – 启动 EC2 实例

在每个子网中使用适合区域的 AMI 和密钥对启动了 EC2 实例。

EC2 实例启动界面

对辅助 VPC 重复实例创建步骤。

📌 data_source.tf

data_source.tf 内容

为辅助 VPC 创建等效的 data_source.tf 文件。

📌 locals.tf

locals.tf 内容

📌 variables.tf

variables.tf 内容

📌 输出

输出截图
主 VPC 输出outputs 1
辅助 VPC 输出outputs 2
其他输出outputs 3

进一步资源

DevOps #Terraform #AWS

感谢 Piyush Sachdeva 和 The CloudOps Community

Back to Blog

相关文章

阅读更多 »

第13天:Terraform 数据源

数据源 将数据源想象成一个电话簿,其中用户名和电话号码以键值对的形式通过 API 访问。不要将值硬编码……