零基础5分钟上手亚马逊云科技核心云开发知识 - 跨VPC的API调用

简介:

欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,让大家零基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构方案。

我将每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS最佳实践,并应用到自己的日常工作里。本次我将介绍如何跨VPC网络调用位于不同网络环境的服务器API,实现服务内部之间的低延时、安全、低成本、简化的的API。我们将利用VPC将不同类型的应用进行网络划分和隔离,再通过VPC Peering将不同VPC以私有网络的形式连接到一起。本方案架构图如下:

方案所需基础知识  

亚马逊云科技 VPC 介绍

亚马逊云科技 Virtual Private Cloud(VPC)是一项服务,允许用户在亚马逊云科技的云环境中创建一个逻辑上隔离的网络。通过 VPC,用户可以完全控制虚拟网络的配置,包括选择 IP 地址范围、创建子网、配置路由表和网络网关等。这种定制化的网络环境使得用户能够安全地运行和管理 AWS 资源,并与其他网络进行安全连接。

利用 VPC Peering 实现服务内部的 API 调用的优势

VPC Peering 是一种网络连接方式,它允许不同的 VPC 通过私有 IP 地址直接进行通信,即使这些 VPC 位于不同的区域或账户中。以下是利用 VPC Peering 实现服务内部 API 调用的主要优势:

高效的内部通信

VPC Peering 使得服务之间可以通过私有网络直接通信,避免了数据在公网传输的延迟和额外成本,提高了服务调用的效率。

增强安全性

通过 VPC Peering,API 调用在完全私有的网络环境中进行,减少了暴露在公共互联网中的风险,增强了数据传输的安全性。

降低数据传输成本

使用 VPC Peering 进行内部通信,避免了通过公网或 VPN 进行数据传输的成本,有助于优化总体费用。

灵活的网络架构

VPC Peering 支持跨区域、跨账户连接,灵活性高,方便企业在不同区域或账户之间构建安全、稳定的内部 API 调用架构。

简化的配置与管理

VPC Peering 的配置相对简单,无需额外的网关设备或复杂的路由设置,且不需要处理网络地址转换(NAT),降低了运维复杂性。

本方案包括的内容:

1. 为亚马逊云科技上的VPC网络环境配置VPC Peering网络连接

2. 确保内部的服务API请求调用通过VPC Peering进行内网路由传输

项目搭建具体步骤:

1. 首先我们登录亚马逊云科技控制台,进入VPC服务。

2. 接下来我们创建3个VPC网络环境,分别命名为“Developer VPC”, "Marketing VPC"以及“Finance VPC”

3.  接下来我们进入EC2服务,在3个VPC中分别创建3个EC2服务器,命名为“DeveloperServer”, "MarketingServer"以及“FinanceServer”, 这三个服务器会托管三个不同的Web 服务,为了简化演示,本场景我们以简单的Ping连接进行测试。

4. 接下来我们回到VPC服务中,点击左侧的"Peering connection",再点击“Create peering connection”创建一个VPC Peering网络连接。

5. 为VPC Peering命名为“Marketing <> Finance”,选择两个需要相连的VPC为“Marketing VPC”和“Financeg VPC”,并点击Create创建。

 6. 创建完成后。我们需要在创建好的peering connection中,点击Action-> Accept request,确认创建让连接生效。

 7. 接下来我们需要配置我们的Marketing VPC内的测试服务器MarketServer的subnet子网路由,让通过Peering连接发向其他VPC的请求传输正确路由。点击Marketing VPC所配置的路由表route table。

8. 选中路由表,点击"Edit"进行配置编辑

9.我们配置路由表,在“Destination”部分输入其他VPC网络的CIDR网段如“172.31.0.0/16”,Target选择我们刚创建好的Peering 连接“Marketing <> Finance”,这表示发往其他网段的请求会被路由到Peering连接,再通过路由连接传输到其他子网中。最后点击“Save“完成修改。

10. 因为我们需要让请求传到另外的VPC的同时,让其他VPC中的API响应也返回到本VPC中。我们需要到另外的VPC Finance中,配置该VPC的路由表。

11. 以相同方式编辑Finance VPC的路由表,Destination填写Marketing VPC的网段”10.0.0.0/16“,Target选择Peering连接”Marketing <> Finance“,让Finance VPC服务器的API响应返还到Marketing VPC内的服务器中。再点击Save完成修改。

 12.下面我们回到EC2服务主页,通过SSH的方式连接到位于Marketing VPC中的Marketing Server服务器。点击Connect。

13. 我们需要检查确认FinanceServer EC2服务器的Security Group防火墙,需要来自Marketing Server EC2服务器的ping请求。我们需要确认防火墙中的入站规则中,允许来自Marketing VPC网段”10.10.0.0/16“的ICMP协议。

14. 此时我们再通过Linux命令测试ping连接,就可以得到ping请求成功的回复了。

ping <172.31.x.xx>

如何通过Python代码形式创建VPC Peering连接? 

除了利用亚马逊云科技控制台,我们同时可以用Python代码创建VPC Peering连接,样例代码如下。

import boto3

# 创建EC2客户端
ec2_client = boto3.client('ec2', region_name='us-east-1')  # 替换为你需要的区域

# 创建第一个VPC
vpc1_response = ec2_client.create_vpc(CidrBlock='10.0.0.0/16')
vpc1_id = vpc1_response['Vpc']['VpcId']
print(f"Created VPC 1 with ID: {vpc1_id}")

# 创建第二个VPC
vpc2_response = ec2_client.create_vpc(CidrBlock='10.1.0.0/16')
vpc2_id = vpc2_response['Vpc']['VpcId']
print(f"Created VPC 2 with ID: {vpc2_id}")

# 等待VPC可用
ec2_client.get_waiter('vpc_available').wait(VpcIds=[vpc1_id, vpc2_id])

# 创建VPC Peering连接
peering_response = ec2_client.create_vpc_peering_connection(
    VpcId=vpc1_id,
    PeerVpcId=vpc2_id
)
peering_connection_id = peering_response['VpcPeeringConnection']['VpcPeeringConnectionId']
print(f"Created VPC Peering Connection with ID: {peering_connection_id}")

# 接受VPC Peering连接
ec2_client.accept_vpc_peering_connection(VpcPeeringConnectionId=peering_connection_id)
print(f"Accepted VPC Peering Connection with ID: {peering_connection_id}")

# 更新路由表以便通过Peering连接通信
# 获取VPC1的默认路由表ID
vpc1_route_tables = ec2_client.describe_route_tables(Filters=[{'Name': 'vpc-id', 'Values': [vpc1_id]}])
vpc1_route_table_id = vpc1_route_tables['RouteTables'][0]['RouteTableId']

# 获取VPC2的默认路由表ID
vpc2_route_tables = ec2_client.describe_route_tables(Filters=[{'Name': 'vpc-id', 'Values': [vpc2_id]}])
vpc2_route_table_id = vpc2_route_tables['RouteTables'][0]['RouteTableId']

# 为VPC1的路由表添加指向VPC2的路由
ec2_client.create_route(
    RouteTableId=vpc1_route_table_id,
    DestinationCidrBlock='10.1.0.0/16',
    VpcPeeringConnectionId=peering_connection_id
)

# 为VPC2的路由表添加指向VPC1的路由
ec2_client.create_route(
    RouteTableId=vpc2_route_table_id,
    DestinationCidrBlock='10.0.0.0/16',
    VpcPeeringConnectionId=peering_connection_id
)

print("Routes have been created in both VPCs to enable communication through the VPC Peering connection.")

代码解释:

  1. 创建EC2客户端:使用Boto3创建一个EC2客户端来与AWS EC2服务进行交互。
  2. 创建VPC
    • create_vpc 方法用于创建VPC。我们创建了两个VPC,一个使用CIDR 10.0.0.0/16,另一个使用CIDR 10.1.0.0/16
    • 等待VPC的状态变为可用。
  3. 创建VPC Peering连接
    • 使用 create_vpc_peering_connection 方法在两个VPC之间创建一个VPC Peering连接。
    • 需要使用 accept_vpc_peering_connection 方法接受这个连接。
  4. 更新路由表
    • 获取两个VPC的默认路由表ID。
    • 在每个VPC的路由表中添加路由,以通过VPC Peering连接进行通信。

以上就是在亚马逊云科技上通过VPC Peering跨VPC实现服务内部的API调用的全部步骤。欢迎大家关注0基础5分钟上手AWS系列,未来获取更多国际前沿的AWS云开发/云架构方案!

  • 22
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值