从一个 AWS Elastic Beanstalk 环境连接到另一个

Connecting from one AWS Elastic Beanstalk environment to another

我有 2 个 Elastic Beanstalk 环境,“api-server”和“网站”。两者都有 1-4 个 EC2 实例的容量和一个负载均衡器。负载均衡器和实例都有 public 个 IP 地址。我想从“网站”连接到“api-服务器”,但如果不创建“api-服务器”public,我就无法正常工作。 “api-server”不应该是 public.

我连接的 VPN 允许 HTTP 连接到两个 EB 环境,我可以确认两个应用程序都响应。

两种 EB 环境都有 2 个安全组,一个用于负载均衡器,称为“负载均衡器安全组”,另一个用于实例,称为“VPC 安全组”。所有负载均衡器和 VPC 安全组都有一个出站规则,允许所有协议上的所有流量。

因为我想从“网站”连接到“api-server”的任何实例,所以我想连接到负载平衡器而不是直接连接到任何实例。所以我应该向“api-server”的负载均衡器组添加一个入站规则,允许来自“网站”实例的流量。

所有实例都具有“VPC 安全组”,但添加规则并未授予“网站”实例访问“api-服务器”的权限。我也尝试添加负载均衡器安全组但没有成功。我还尝试了“所有流量”类型。

我还尝试通过负载平衡器等不同的 URL 连接到“api-服务器”,但也无法连接。

当我添加允许流量到任何地方的规则时,例如。源类型“Anywhere-IPv4”,我可以从网站访问“api-server”。但正如我所说,我不想要“api-服务器”public,它应该只能由“网站”访问。

还有一个方法是添加一个带有当前“网站”实例 IP 地址的规则,但由于它们随着新版本的部署而改变,而且它们有时或多或少是实例(从 1 自动缩放到 4)它不是一个选项。

那么它是如何工作的?

我在文档中到处搜索,但找不到任何我没有尝试过的东西。我错过了什么?这应该不会那么难吧?

感谢您的帮助!

编辑:一切都在同一个 VPC 中。

So how does it work?

引用安全组 (SG) 仅适用于 VPC 或对等 VPC。由于您是通过互联网访问您的第二个 EB,而不是在同一 VPC 内,因此您无法引用 SG。

您必须将实例的 public IP 地址列入白名单。最好的方法是将它们放在 私有子网 中并使用 NAT 网关。 NAT 为您提供了一个 public 静态 IP,您可以在第二个 EB 环境的入口规则中使用它。