我有一个在 Beanstalk 上运行的 Web 服务器,它与mydomain.org
Route53 相关联。安全组限制了对此 Web 服务器的访问。我还有一个在同一个 VPC 中运行的 Lambda,具体来说是在具有 NAT 网关的私有子网中,它需要调用此 Web 服务器。问题是mydomain.org/api/dostuff
Lambda 发出的调用会通过公共互联网发出,而不是留在 VPC 内,因此使此调用不超时的唯一方法是将安全组中的 NAT 公共 IP 列入白名单。
我希望将呼叫保留在 VPC 内,因此我为 Elastic Beanstalk 和 Lambda 使用的子网创建了一个 VPC 终端节点,并认为 DNS 解析器会将流量保留在 VPC 内,但这并没有发生。呼叫仍然转到公共互联网。
有什么想法可以让我保留 VPC 内的流量,同时仍然使用mydomain.org
与 Web 服务器关联的公共域?
答案1
如果您通过域名来定位 Beanstalk 实例,它将解析为公共 IP,这可能会通过公共区域路由流量。这不完全是互联网,但它是收费的。
两种可能的解决方案:
- 让 lambda 通过其私有 IP 来寻址 beanstalk 实例(EC2 私有 IP 不会改变)。如果您的 EC2 实例扩展、被替换或您正在使用负载均衡器,则此方法将不起作用
- 设置 Route53 私有托管区域并覆盖 VPC 的域名,以便它解析为私有 IP。这应该在更多情况下有效,尽管在部署后可能需要更新 DNS 条目,具体取决于您如何设置 beanstalk。