我在VPC中有一个EC2。我创建了一个lambda函数而没有配置VPC(所以lambda控制台显示没有VPC)。但它仍然可以启动,停止EC2。 (在lambda服务角色中,我授予启动权限,停止ec2), 问题1:为什么lambda可以访问ec2,即使它不在ec2的VPC中?
但是,相同的lambda函数无法使用http://website_of_ec2.com访问EC2中安装的Web服务器。除非我使用VPC,子网和安全组配置lambda(与EC2相同的VPC) 问题2:为什么在这种情况下lambda需要配置VPC?
答案 0 :(得分:2)
我在VPC中有一个EC2。我没有创建lambda函数 配置VPC(所以lambda控制台显示No VPC)。但它仍然可以 开始,停止EC2。 (在lambda服务角色中,我授予权限 开始,停止ec2),问题1:为什么lambda即使可以访问ec2 它不在ec2的VPC中?
在这种情况下,Lambda不访问ec2实例,它正在访问AWS的ec2服务。此服务是一个公共API ,您可以从CLI调用或(因为我猜你的Lambda正在做)一个合适的SDK。这与AWS控制台相当,您可以启动/停止/终止ec2实例,但您无法通过控制台实际登录到ec2计算机。
但是,相同的lambda函数无法访问Web服务器 使用http://website_of_ec2.com安装在EC2中。除非我 使用VPC,子网和安全组(相同的VPC)配置lambda 作为EC2)问题2:为什么在这种情况下lambda需要有VPC 构造
在这种情况下,您的Lambda没有公共端点连接到ec2实例。 Lambda需要访问ec2实例所在的VPC,因此需要额外的配置。