2016-09-29 31 views
0

我想有一個架構:將Lambda和RDS都放在API網關後面的默認VPC中?

Route53 < - > API網關< - > LAMBDA < - > RDS和DynamoDB。

我對這裏的一些網絡方面感到困惑!

從大多數文檔中,我瞭解到默認情況下默認啓動的是Lambda,並且可以從那裏訪問互聯網,但沒有「VPC」內的資源。而這第二個VPC(在引號中)是指大多數討論中的非默認VPC。但是不清楚的是,如果我將Lambda和RDS都放置在默認VPC,公共子網中的帶有--vpc-config信息和RDS的私有子網中的lambda中,我的Lambda是否具有互聯網連接?

即使一切都在默認子網中,我是否應該通過Amazon VPC NAT網關將我的lambda函數放入通過Internet訪問的私有子網?

我知道這是一個理論上的問題 - 文件讓我感到困惑,因爲沒有明確提及不能做的事情!

回答

2

從大多數的文件,我的理解是,LAMBDA是 默認默認VPC推出,可以從那裏訪問互聯網,但沒有 資源內的「VPC」。

這是不正確的。默認情況下,Lambda根本不在VPC中啓動。或者,如果它位於VPC中,則由於它不存在於您的AWS賬戶中而無法看到。

如果我放在Lambda和RDS都在默認VPC,拉姆達與--vpc,配置信息和RDS一個 公共子網的專用子網,將 我LAMBDA有互聯網連接?

不,您的Lambda功能即使在公共子網中也不能訪問互聯網。這是因爲它從未被分配過公共IP地址。一旦您將Lambda函數放入VPC中,您必須有一個NAT網關才能讓Lambda函數訪問VPC之外的任何內容。

即使一切都在默認的子網,應我把我的拉姆達 功能與互聯網接入的私人子網通過亞馬遜VPC NAT網關?

是的,這是提供Lambda函數以訪問VPC和VPC外存在的資源的正確方法。


另請注意,DynamoDB(和AWS API)不會在您的VPC中運行。因此,如果您在需要訪問DynamoDB的VPC中放置Lambda函數,或者通過AWS API訪問其他任何內容,則必須添加一個NAT網關到VPC。


請注意,「默認VPC」是您在首次創建AWS賬戶時爲您設置的VPC的術語。您可以在VPC服務控制檯的帳戶中看到此VPC。除了使用默認設置爲您創建之外,您應該將其視爲您帳戶中的另一個VPC。當您未指定VPC時,默認VPC不會被Lambda使用,並且您的VPC網絡外部存在的其他服務(如DynamoDB)不會使用它。

+0

感謝您的回覆!這對我來說是一個很好的發音板!但隨後會帶來更多問題。使用NAT,路由如何工作? 1.通常,NAT只會將傳出流量路由到互聯網,而不允許傳入流量。來自API網關的傳入REST調用會發生什麼。 2. API網關將路由不同的REST方法到同一個互聯網網關到同一個NAT,然後到不同的lambda函數,每個lambda函數都可以訪問不同的vpc或非vpc資源。在lambda子網中安全組,路由表等的配置過多?任何示例? – Aditi

+0

我相信你已經在想這個了。 NAT網關僅用於VPC中私有子網的出站流量。由於缺少或存在NAT網關,API網關到Lambda通信的工作方式不會改變。另請注意,API網關存在於您的VPC之外,並直接通過AWS API調用您的Lambda函數。 –