AWS网关API:来自同一个域的多地区部署

我有一个lambda支持的API网关,我部署在两个地区。 这两个API是完全相同的。 我有两个不同的url

* .execute-api.us-east-1.amazonaws.com * .execute-api.eu-west-1.amazonaws.com

我的想法是在两个地区定义相同的自定义域,并使用Route53地理定位function,为用户提供最近区域的api。 但是,在一个区域中定义自定义URL之后,当我尝试在第二个区域中定义时,出现错误,说明此域已在另一个Cloudfront分发中定义。

这是一个错误,或者我可以采用哪种策略来进行API网关的多区域部署。

谢谢。

不幸的是,这是不可能的 。 这里主要的阻止者是CloudFront。 MikeD @ AWS在他们的论坛上提供信息:

创build自定义域名时,会为域名创build关联的CloudFront分配,而CloudFront将在域名上强制实施全球唯一性。

如果具有域名的CloudFront分配已经存在,则CreateCloudFrontDistribution将失败,并且API网关将返回一个错误,但不保存域名或允许您定义其关联的API。

因此,目前(2016年6月29日)没有办法在多个地区获得API网关来处理相同的域名。

自从2016年7月4日确认存在开放function请求以来,AWS没有提供必要的更新.AWS 表单线程用于更新

我们解决这个问题的方式实际上是以云端为前沿的。 然后在云端,您将两个端点都作为起点添加。

我有几个想法。

如上所述,CloudFront无法与CloudFront进行负载平衡。 所以你的select似乎是

  1. 使用CloudFront的单一来源。 美国东海岸和西海岸之间的延迟时间为85毫秒并不是那么糟糕。 与我居住在新西兰和美国之间的等待时间相比,高达250ms的时间相当短。
  2. 删除CloudFront,使用Route 53基于延迟的路由直接点击API网关。 有了这个,你可以使用尽可能多的地区,只要你喜欢 – 如果你有客户在那里添加一个在悉尼/亚洲。