有問題的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網關。