我在 Heroku 中有一个应用程序调用第三方服务 - 我们将其称为“XYZ”以进行讨论。 XYZ 服务有 IP 限制。
之前我们使用 MuleSoft 进行此集成(即有/曾经有 Heroku 体验 API + XYZ 系统 API),并且我们能够将 XYZ 中的 MuleSoft IP 列入白名单。
我们正在寻求离开 MuleSoft(原因我不会详细说明,我只想说;它不适合我工作的公司),但我想知道我们如何才能获得 IP将图片中没有 MuleSoft 的 XYZ 白名单。
我在 Heroku 中发现了一些代理插件,例如Proximo、Fixie 和 QuotaGuard;但这些都是有成本的,而在我工作的地方,引入新的供应商/成本总是有点麻烦。
我们已经在 Heroku 和 AWS 之间建立了 Heroku 私有空间对等互连,并且对等的 AWS VPC 具有带有静态 IP 的 NAT 网关。如何通过对等 AWS VPC 中的 NAT 网关将 Heroku 请求发送到 XYZ?
我想也许我需要将某种代理部署到我的 AWS VPC(可能是 NGINX 或附加到我的 VPC 的 Lambda)中,并使用可从 Heroku 内部解析的自定义 DNS。然后,我对目标 XYZ 服务的请求进行某种类型的重写或 URL 重写,这将通过 NAT 网关传出...有什么想法吗?
不幸的是,Heroku 的私人空间似乎对于数据包的定制路由不够灵活。看起来从 dynos 到公共 IP 地址的所有数据包都通过 稳定出站 IP 地址 路由,而只有从 dynos 到 VPC 的私有地址范围的数据包通过 peering 路由。
仍然可以在您的 VPC 中运行隧道/代理服务器并将其 DNS 记录公开,以便 dynos 上的进程能够将隧道/代理服务器解析为其私有 IP 地址。也可以在您的 VPC 中在稳定的私有 IP 地址运行 DNS 服务器,但需要小心,因为 DNS 服务器可能会成为单点故障。