问题标签 [aws-nat-gateway]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
57 浏览

amazon-web-services - AWS - 通过 NAT 网关发送 Internet 流量和私有到另一个 VPC

我在这里的情况是,我必须使用 1 个 IP(白名单问题)通过我的各种 docker 连接公共 API,因此使用 NAT 网关。同时,Docker 还需要连接到 RDS(来自另一个 VPC)并进行一些读/写操作。

ew如何实现这一点?是否可以通过 NAT 网关进行公共流量路由,通过 VPC 对等互连将私有流量路由到另一个 VPC?

提前致谢。

0 投票
1 回答
8580 浏览

amazon-web-services - 单个 NAT 网关可以跨多个 AZ 吗?

当我配置 NAT 网关时,我必须选择一个子网,因此据我了解,一个 NAT 网关用于一个子网,它属于一个可用区。

然后我看到了下面的声明

如果您在多个可用区中拥有资源并且它们共享一个 NAT 网关,则在 NAT 网关的可用区关闭的情况下,其他可用区中的资源将无法访问 Internet,要创建独立于可用区的架构,请创建 NAT 网关并配置您的路由以确保资源使用同一可用区中的 NAT 网关。

如果我在不同的子网中有多个 EC2,它们如何共享一个 NAT 网关?我理解错了吗?下面是我尝试创建 NAT 网关时看到的屏幕截图

在此处输入图像描述

0 投票
1 回答
1781 浏览

amazon-web-services - 如何为 ELB 使用 vpc 端点?

我想创建一个 lambda(vpc),它将访问 vpc 中的资源并通过公共应用程序负载均衡器向服务(REST API) 发出请求。我发现 vpc 端点是比创建 nat 网关更好的解决方案。

我已经为 elasticloadbalancing 创建了一个 vpc 端点(按照https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint中的步骤)并在策略中授予了完全访问权限. 我找不到如何从 lambda 访问它,发出请求的 URL 是什么?

编辑:感谢 John 提供 vpc 端点用于连接 ELB API 的信息。所以 Vpc 端点不能解决我们的问题。我们在 vpc 中有我们的基础设施,其中包括数据库(只能在 vpc 中访问)和在 ELB 后面运行的应用程序服务器。对于某些任务,我们希望运行 lambda,它将读取数据库(因此 lambda 必须在 vpc 中)并使用 ELB 对我们的应用程序进行 API 调用。由于只能从公共 dns 访问 ELB,因此 lambda 无法连接到 ELB。

我读过设置 NAT 网关是一种解决方案。还有其他更简单的方法吗?

0 投票
1 回答
318 浏览

amazon-web-services - AWS:两个 AZ 中的两个私有子网可以共享同一个 NAT 网关吗?

我在一个可用区域中有一个私有子网和一个公共子网,在另一个区域中有两个相同的子网。

我可以在一个公共子网中创建一个 NAT 网关,并为两个私有子网创建两个路由表,它们都指向这个单一的 NAT 网关吗?

还是我必须创建两个 NAT 网关,每个 AZ 一个?

0 投票
1 回答
67 浏览

amazon-ec2 - 一个区域中两个 AZone 的 NAT 网关

我在一个区域的不同 AZone 中有 2 台服务器,它们与我的客户建立传出连接。现在,每台服务器都有自己的弹性 IP,以及每个 AZ 的内部子网的 IP 地址。(第一个可用区 - 172.30.0.0/20,第二个可用区 - 172.30.16.0/20)

我的目标是:建立一个 NAT 网关,因此来自这些服务器(在两个 AZone 中)的所有传出连接都通过一个弹性 IP 的 NAT。据我所知 - 我只能在一个 AZ 中创建 NAT 网关,因为我应该选择子网。

问题:是否可以使 NAT 网关与两个子网(在我的情况下 - 两个 AZ)一起工作?也许我应该创建单独的子网?

请帮忙。提前致谢!

0 投票
1 回答
11894 浏览

amazon-web-services - 如何为在 EC2 模式下运行在 AWS ECS 集群中的容器分配公共 IP

我正在尝试使用服务之间的服务发现来实现多服务 ECS 集群。我正在尝试按照教程使用 Amazon ECS CLI 创建使用服务发现的 Amazon ECS 服务。但是,它不包括完整的工作示例

我所做的是定义两个服务,通过使用定义:

  • docker-compose.yml
  • ecs-params.yml

我可以轻松启动 ECS 集群和这两个服务。一切看起来都不错。但是其中一项服务需要公共 IP 地址。所以在相应的ecs-params.yml文件中,我把assign_public_ip: ENABLED. 但是没有分配公共 IP 地址。在 ECS 控制台中,服务详细信息显示Auto-assign public IP DISABLED为 ,并且对于任务,它列出了私有 IP 地址而没有公有 IP 地址。

不幸的是,根据Task Networking with the awsvpcNetwork Mode的文档,这似乎是不可能的:

awsvpc 网络模式不为使用 EC2 启动类型的任务提供具有公共 IP 地址的任务 ENI 。 要访问 Internet,应在配置为使用 NAT 网关的私有子网中启动使用 EC2 启动类型的任务。有关更多信息,请参阅 Amazon VPC 用户指南 中的 NAT 网关。入站网络访问必须使用私有 IP 地址从 VPC 内部进行,或者从 VPC 内部通过负载均衡器进行路由。在公共子网中启动的任务无法访问 Internet。

:如何解决 AWS ECS EC2 启动类型的限制?

我不明白为什么 EC2 启动类型不支持公共 IP 地址?或者 - 我是否使用不同的网络模式,然后分配公共 IP 地址?为什么 AWS 文档对此没有更清楚?

源代码

使用以下命令创建集群:

正如上述教程所建议的,定义了两个服务。(backend容器中的简单 Node.js 应用程序)和frontend(配置为代理到后端的简单 NGINX 服务器)服务都在各自的目录中。在每个目录中都是docker-compose.ymlecs-params.yml文件。

前端服务通过以下方式启动:

docker-compose.yml是:

而且ecs-params.yml是:

docker-compose.yml使用类似的命令和类似的ecs-params.yml文件启动后端服务。

0 投票
1 回答
1461 浏览

amazon-web-services - AWS SSM 会话管理器和 Nat Gatway

我在私有子网中创建了一个 EC2 实例(即路由表没有附加 Internet 网关)。

附加到私有子网的路由表将 0.0.0.0/0 路由到 NAT 网关。

EC2 实例具有正确的 SSM 角色并显示在 SSM 托管实例列表中。

我可以通过会话管理器在实例上发起会话。

但是,当我从路由表中删除 NAT 网关映射时,会话连接不会连接。

我的理解是 NAT 仅用于传出流量。所以我假设会话管理器连接是通过内部 AWS 网络而不是公共互联网路由的,因为实例无法访问。但是我不明白为什么该实例试图通过公共互联网路由流量。我本来希望将自己注册为 SSM 的托管实例,该实例上的 SSM 代理将需要互联网访问。但我不明白为什么 Session Manager 会要求实例能够访问 Internet?

谢谢。

0 投票
0 回答
326 浏览

amazon-web-services - AWS Nat Gateway,错误的请求限制 - 高负载 - 超时

我对 AWS 中的 NAT 网关进行了负载测试。我达到的请求限制比文档中描述的要低得多。根据文档,Nat 应该支持每秒约 900 个请求,但在我的配置中,我发现在每秒运行约 300 个请求时,约 0.04% 的请求未被处理。

我使用 ECS 集群运行 node.js 应用程序,并且能够配置每秒请求数。NAT 在 1 分钟左右工作正常,后来我的应用程序开始因少数请求而超时。

AWS 不允许访问此类机器,并且 cloudwatch 指标看起来还不错。

一般来说,我正在寻找能够承受高负载的静态 ip 解决方案。这里有没有人经历过类似的事情?

0 投票
2 回答
53 浏览

amazon-web-services - 将 AWS NAT GW 连接到网络

我目前在 AWS 中使用 IGW 是为了将烧瓶 ec2s 连接到外部 api 请求。我想从现在开始保护那些服务器,

含义 - 将它们移动到私有 ip ec2s 并仍然从外部获取 api 请求。

我曾尝试使用 nat gw 来传递私有 ip,但我发现它只能从内部到互联网工作,反之则不行。

如何将 nat gw 用于两个方向(或任何其他解决方案),保持私有 IP 的安全性和双向互联网通信?

0 投票
1 回答
125 浏览

amazon-web-services - 可通过 Internet 访问的可公开访问的 RDS 和 Lambda

我有一个需要访问 RDS 和互联网的 lambda 函数。那里的一切都表明必须设置 NAT 网关;有问题的 RDS 是可公开访问的,如果我允许从所有 IP 连接到 RDS,则 lambda 能够连接到它;但是,我想避免这种情况。有没有办法确定分配给 lambda 函数的可能 IP 范围并将该范围列入安全组中的白名单>?