通过Direct Connect选项使用Route 53 Resolver从本地访问私有API Gateway

0

【以下的问题经过翻译处理】 我有一个使用VPC端点的API Gateway私有API,只能由来自本地的客户(浏览器和应用程序)通过Direct Connect进行访问。"x-apigw-api-id:{api-id}"不是一个Header选项,因此目前一些应用程序代码无法修改。临时解决方案是在Fargate上使用NGINX,但我想要一个不需要中间代理的解决方案,以简化运维操作。

我已经为"{restapi-id}.execute-api.{region}.amazonaws.com"创建了一个转发区域,并在他们的本地DNS中将其指向部署的Route 53入站解析器。我发现API Gateway DNS 名称的第一个响应是一个CNAME,指向"execute-api.eu-central-1.amazonaws.com",但这个CNAME永远不会被我们的DNS或Internet转发器解析为A记录。

对于私有API的完全合格域名(FQDN)直接请求Route53 Resolver会工作,因为客户端会再次请求相同的Route 53 Resolver来解析CNAME。然而,我希望客户端与本地DNS服务器通信,该服务器将请求转发到Route 53 Resolver,而返回的CNAME将在本地DNS上查询,而不是上次使用的解析器。

选项:是否有推荐方式?

选项1 - 为"execute-api.eu-central-1.amazonaws.com"创建一个转发区域。这将解决问题,但这意味着prod/non-prod API Gateway请求将通过一个单一的VPC。但我希望隔离的prod/non-prod环境。

选项2 - 使用专用VPC,私有API Gateway,Route 53 Resolver和VPC端点,用于所有区域本地API访问请求。

选项3 - 配置(QiP / BIND)以重新请求最后一个解析器的CNAME。

额外的问题

其他问题:

1 - 我是否漏掉了某些选项,或者甚至有没有更好的建议用于这种情况的架构?

2 - 在Route 53解析器上是否有我遗漏的配置,以将A记录返回给客户端?当收到CNAME时,Route 53 Resolver是否会请求A记录?

profile picture
EXPERTE
gefragt vor 7 Monaten57 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 您列出的所有选项都是有效的,尽管看起来前两个选项混合了prod和non-prod环境,而您不希望这样做。

第三个选项(如果在技术上可行)是简单的选项。您可以配置本地解析器来覆盖CNAME解析(例如,对于BIND,可以参考:https://www.redpill-linpro.com/sysadvent/2015/12/08/dns-rpz.html),或仅为其私有API主机名({restapi-id} . execute-api。{region}.amazonaws.com)创建本地区域,并直接包含针对API端点的IP地址(它们不会更改)的A记录。

我想到的另一个额外选项是在私有API Endpoint前部署ALBs(应用负载均衡器)。这仍然是一种代理方法,但至少使用的是托管服务而不是NGINX。

API请求首先会发送到内部ALB(使用任何域名/主机名),然后ALB会将其转发到私有API终端的IP地址(IP不会更改)。需要额外的步骤是在API Gateway的“Custom Domain Tab”下创建适当的映射,并将ALB上使用的域名与实际的API关联起来。因为私有映射未包含在内,您可以将其创建为区域或边缘映射,它仍然会工作。

profile picture
EXPERTE
beantwortet vor 7 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen