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的路由表,它实际上是默认的子网,这是公开的!

相关问题