连接到私有VPC的AWS Lambda无法启动/停止EC2实例

时间:2019-11-26 16:22:06

标签: amazon-web-services amazon-ec2 aws-lambda amazon-vpc

我创建了AWS Lambda来启动和停止私有VPC中托管的EC2实例。

我可以在“ NO VPC”中部署Lambda函数,并执行任何操作。

但是,当我在私有VPC(我的EC2所在的位置)和2个不同的子网(其中一个子网EC2已启动)中部署Lambda功能并进行必要的安全组更改时,我收到超时错误< / strong>,并且无法执行任何操作。

问题:尽管不需要外部互联网,但是否有必要向mbda添加NAT网关?

如果是,请告诉我原因。

如果没有,请告诉我要完成此过程还需要检查什么。

1 个答案:

答案 0 :(得分:2)

在对AWS进行API调用时,可以从Internet访问service endpoints。因此,发出启动或停止Amazon EC2实例的命令需要访问Internet。

如果未将AWS Lambda函数配置为 使用VPC,则默认情况下它可以访问Internet

如果将AWS Lambda函数配置为使用VPC,并且该Lambda函数需要访问Internet,则:

  • 配置Lambda函数以使用私有子网
  • 在公共子网中启动 NAT网关,并更新专用子网路由表,以将NAT网关用于Internet绑定流量

或者,您可以为EC2创建 VPC端点。这允许发往EC2服务的命令无需通过Internet即可通过VPC端点。这通常是针对没有Internet网关的VPC(例如,没有公共访问权限的Dev / Test VPC)进行的。

最后,考虑一下Lambda函数是否确实需要连接到VPC。如果需要在VPC中访问 并访问Internet,则需要使用上述方法之一。但是,如果不需要访问VPC,则不要将其连接到VPC,它将可以正常连接到Internet。