需求:因为lambda本身在建立之初是具备公共的Intelnet访问权限的,但是因为架构需要VPC,配置VPC以后Lambda函数将失去公共的Intelnet访问权限,此时需要给VPC配置NAT网关,同时需要在安全组中添加需要出站的连接(默认是全部允许出站)
AWS官方提供的NAT网关架构图
AWS官方技术文档
相关AWS技术知识点
1.这里涉及到AWS云的几个知识点:VPC、子网、Intelnet网关、NAT网关。
2.默认官方文档架构中是分为Public与Private俩个子网段,我的环境是已经
存在VPC与Public子网段,因此,这里只涉及到了Private网段。
配置VPC
1.VPC默认是会存在,这里会涉及到各个AWS服务的VPC关联问题,如果新建VPC,
会导致其他VPC与Lambda或其他服务无法访问等未知问题,所以,不建议在创建
新的VPC,而是在原有的VPC中创建子网,然后配置NAT网关。
2.默认VPC中存在了Subnet子网段:
1 | 172.31.0.0/16 |
以下我们将在这个VPC中创建Subnet子网。
创建VPC中的Subnet子网
1.新建NAT网关的子网,这里面涉及到网络的一些基础概念,子网划分,需要了解。
默认VPC存在了三个子网为:
1 | 172.31.0.0/20(0-15) |
2.所以为了方便区分,我们需要创建一个命名subnet-lambda的子网:
1 | 172.31.48.0/20(48-63) |
作为NAT网关需要使用的子网段。
配置Intelnet网关
1.创建VPC时会自动创建Intelnet网关并且自动attached,为AWS提供的公共Intelnet访问。
2.如果是新建的VPC,就需在新建一个Intelnet网关,并且attached到创建的VPC上。
配置NAT网关
1.新建NAT网关,将其关联到一个可已经配置Intelnet网关的子网。
2.创建一个ElasticIP,attached到NAT网关。
配置Route表
1.在路由表需要创建一个Route表(rtb-default),一般会创建默认Route表,自动关联,
这时将上面新建的Intelnet网关标记到默认Route表,并关联已经创建的VPC中的三个子网。
2.新建一个Route表(rtb-lambda),关联172.31.48.0/20子网段。
将路由标记为0.0.0.0/0 -->> nat-gateway-id(新建的NAT网关)。
配置Lambda函数
1.Lambda函数需要具有对VPC的执行Read权限,需要在IAM中添加赋予。
2.配置网络为新建VPC中的子网(172.31.48.0/20)。
3.开启需要入站、出站的安全组。
此时,Lambda函数就具备了Intelnet公共访问权限了。