Lambda@Edge 与作为 Cloudfront 来源的 Lambda 的性能和成本比较

Performance and Cost Comparison of Lambda@Edge vs Lambda as Cloudfront Origin

我正在创建一个服务,客户端需要在其中获取一些存储在 DynamoDB 中的数据 table。我将 Cloudfront 用作 CDN 以减少延迟。我有两种从 DynamoDB table.

获取数据的方法

方法一: 客户端向 Cloudfront 发送请求。 Cloudfront 检查缓存的响应。假设缓存的响应不可用,Cloudfront 会调用带有源请求触发器的 Lambda@Edge 函数。 Lambda@Edge 函数查询 DynamoDB table,获取数据并将其发送到 Cloudfront 边缘位置。 Cloudfront 缓存来自 Lambda@Edge 函数的响应并响应客户端。问题:这种情况下Cloudfront origin应该怎么设置?

方法二: 客户端向 Cloudfront 发送请求。 Cloudfront 检查缓存的响应。假设缓存的响应不可用,Cloudfront 将请求转发到源,在本例中将是 Lambda 函数。 Lambda 接收 Cloudfront 请求并查询 DynamoDB table,获取数据并将其发送回 Cloudfront 分发。 Cloudfront 边缘服务器缓存响应,并将其转发给客户端。

哪种方法在延迟和成本方面更好。还有没有更好的办法解决这个问题?

方法 1 - 只需将 S3 存储桶设置为原点,(您需要设置一些东西), 并确保你 return 每次都从源头请求边缘 lambda(它永远不会到达 S3)

我认为定价或性能之间没有显着差异!我假设您的大部分呼叫都会被缓存。从长远来看,我会说它几乎是一样的,如果你有一个好的缓存命中率!