通过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
专家
已提问 5 个月前37 查看次数
1 回答
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
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则