我可以从私有VPC内的EC2实例访问我的Lambda吗?

时间:2017-08-16 22:03:22

标签: aws-lambda amazon-vpc

有问题的EC2实例位于私有子网中,并且没有通过NAT设计启用Internet访问。 目前,我的Lambda位于连接到同一VPC的公有子网中。

当我尝试调用Lambda时,我会收到Connection to lambda.us-east-1.amazonaws.com timed out

2 个答案:

答案 0 :(得分:4)

Amazon EC2实例无法“访问Lambda函数”,但他们当然可以调用AWS Lambda API来调用 Lambda函数。

但是,API endpoints for AWS services都驻留在互联网上。因此,调用API 需要访问Internet 。 (目前有两个例外是Amazon S3和Amazon DynamoDB,它们可以使用 VPC端点来访问API端点。)

因此,要从私有子网中的Amazon EC2实例调用Lambda函数,您需要 NAT网关和配置为将Internet绑定流量发送到NAT网关的专用路由表。

Lambda函数连接到公有子网的事实与调用Lambda函数无关。它只是意味着Lambda函数在运行时可以访问VPC中的资源。 (实际上,Lambda函数通常连接到私有子网而不是公共子网,因为只有当它们的流量通过NAT网关路由时,它们才能访问Internet。)

答案 1 :(得分:1)

当您尝试调用Lambda函数时,Lambda函数的位置无关紧要。这是因为在调用Lambda函数时,您没有直接连接到Lambda函数。您正在连接到AWS API以调用Lambda函数。您可以通过NAT网关从私有子网中的EC2实例执行此操作的唯一方法。