2

我正在嘗試爲ElasticCache啓用我的VPC lambda函數以訪問DynamoDB。我知道這一點,我需要建立一個NAT網關。但是,我無法使其工作。我的私人子網是在172.31。 範圍。如何將VPC內部的AWS Lambda函數連接到公共資源(如DynamoDB)?

這是我下面的步驟:

  1. 在10.0.0.0創建IP範圍內的公共子網。
  2. 在上面提到的相同IP範圍內創建公共VPC。
  3. 在公共VPC中創建公共Internet網關。
  4. 創建一個公共路由表,它不是主路由表,並將公有子網連接到它。然後,將0.0.0.0/0的路由添加到上面創建的公共Internet網關。
  5. 在公有子網中創建NAT網關。這個NAT獲得了一個彈性IP和一個私有IP在10. 。*範圍。

現在我有3個路由表,兩件給我的公共子網(10.0.0.0)和一個現有的爲我的私人子網(172.31.0.0),這是我的私人VPC的一部分。

我的私人路由表的路由爲0.0.0.0/0到我的私人Internet網關。

我想我需要改變這條路線指向我的公共NAT網關,但是我無法這樣做,因爲我的NAT的私有IP位於10.0.0.0範圍內。在這一點上,我很困惑如何繼續。我試圖在私有子網中創建一個NAT網關並將路由轉發給它,但它不起作用。我錯過了什麼?

+2

您的私有子網的默認路由應該指向[NAT網關ID](http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html#nat-gateway-create-路由),而不是Internet網關。 –

+0

正如我所提到的,我的私有子網並未在要轉發的選項列表中顯示我的NAT。 – Adi

+0

只要不在Amazon DynamoDB中使用ElastiCache,除非Amazon爲此發佈了一個好的解決方案,因爲現在正確配置它非常痛苦。我們最終使用redislabs.com來開發我們的lambda。 –

回答

0

我犯的錯誤是創建兩個VPC,一個用於私有子網,另一個用於公共。除非啓用Peering,否則AWS VPC無法相互通信。

私人和公共子網的概念首先對於來自網絡背景的人是不明確的。它實際上意味着它是一個邏輯子網,它將具有可從互聯網(如Web服務器)訪問的資源和本地資源(如數據庫服務器(應受Internet保護))。

0

很愚蠢,但你有沒有可能混淆了默認的VPC(172.31 ...)和你創建的VPC(10.0 ...)。所以,如果你看到默認VPC的路由表,它實際上是默認的子網,這是公開的!

相關問題