假设我需要一个可以运行Lambdas的API网关,而且我想成为性能最佳的全局分布式基础架构。另外,我将使用Cognito进行身份验证,使用Dynamodb,使用S3进行用户数据和前端静态操作。

我的应用位于myapp.com
首先,用户从最近的位置获得静态前端:

用户===> CloudFront边缘位置

之后,我们需要与API网关进行通信。

用户===> API网关---> Lambda ---> S3 ||认知|| Dynamodb

API网关可以位于多个区域,即使与CloudFront一起分发,每个端点都指向位于给定区域的Lambda:假设我在eu-west-1部署了一个API。如果从美国发送了请求,即使我的API在CloudFront上,它运行的Lambda也位于eu-west-1,因此延迟总会很高。

为了避免这种情况,我需要在us-east-1和我的所有Lambda上部署另一个API。该API将指向那些Lambda

如果我为每个区域部署一个API,则每个区域都需要一个端点,前端应决定要请求哪个。但是我们怎么知道最近的位置是哪一个呢?

理想的情况是在api.myapp.com处有一个全局端点,该端点将转到最近的API网关,该网关也运行位于该区域的Lambda。我可以使用Route 53延迟路由配置多个指向每个api网关的A条记录吗?

如果这不是正确的方法,您能指出我正确的方向吗?

最佳答案

AWS最近宣布了对区域API终端节点的支持,您可以使用它来实现此目标。

以下是一个AWS Blog,该博客解释了如何实现此目的:

Building a Multi-region Serverless Application with Amazon API Gateway and AWS Lambda

博客摘录:

API网关中的默认API终结点类型是边缘优化的API
端点,使客户端可以通过Amazon访问API
CloudFront分发。通常可以缩短以下时间的连接时间:
地理位置不同的客户。默认情况下,自定义域名为
全局唯一,并且经过边缘优化的API端点将调用
在Lambda集成的情况下,Lambda在单个区域中起作用。
您无法将这种类型的端点与Route 53配合使用
设置和故障转移。

API Gateway中的新区域API端点将移动API端点
区域中,并且自定义域名在每个区域中都是唯一的。这个
使得可以在每个区域中运行API的完整副本,然后
使用Route 53来使用双活设置和故障转移。

关于amazon-web-services - 使用API​​网关,Lambda,Cognito,S3和Dynamodb部署AWS Global基础架构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39787591/

10-11 07:54