有问题的EC2实例位于私有子网中,并且没有通过NAT设计启用Internet访问。 目前,我的Lambda在连接到同一个VPC的公共子网中。我可以在私有VPC中从EC2实例访问我的Lambda吗?
当我尝试调用Lambda时,我收到Connection to lambda.us-east-1.amazonaws.com timed out
。
有问题的EC2实例位于私有子网中,并且没有通过NAT设计启用Internet访问。 目前,我的Lambda在连接到同一个VPC的公共子网中。我可以在私有VPC中从EC2实例访问我的Lambda吗?
当我尝试调用Lambda时,我收到Connection to lambda.us-east-1.amazonaws.com timed out
。
Amazon EC2实例无法“访问Lambda函数”,但他们肯定可以调用AWS Lambda API来调用的Lambda函数。
但是,API endpoints for AWS services都位于互联网上。因此,致电API 需要访问互联网。 (二的例外是目前Amazon S3和DynamoDB,它可以使用VPC端点访问API端点。)
因此,调用来自Amazon EC2实例lambda函数在一个私人子网,你将需要一个NAT网关和一个私人路由表配置为发送互联网绑定的流量到NAT网关。
Lambda函数连接到您的公有子网的事实与调用Lambda函数无关。它只是意味着Lambda函数在运行时可以访问VPC中的资源。 (实际上,Lambda函数通常连接到私有子网而不是公共子网,因为如果它们的流量通过NAT网关路由,它们只能访问Internet。)
当您尝试调用Lambda函数时,Lambda函数的位置并不重要。这是因为您在调用它时没有直接连接到Lambda函数。您正在连接到AWS API以调用Lambda函数。您可以通过一个私有子网中的EC2实例完成此操作的唯一方法是通过NAT网关。