AWS Lambda@Edge/Cloudfront 执行流程

AWS Lambda@Edge/Cloudfront execution flow

我正在重构第三方公司的一个项目,他们添加了两个不同的 Lambda@Edge 函数,这些函数由 CloudFront 触发。

基本上,流程如下:

  1. 当用户从 Web 应用程序调用 S3 文件时 -> CloutFront 触发将调用 Lambda@Edge 的事件。
  2. 有两种 Lambda:一种用于计算每个用户的下载量,另一种用于限制访问。

问题是解决方案不起作用并且缺少下载计数检查。

附加到同一事件的 Lambda@Edge 的执行工作流程是什么?我正在考虑将所有逻辑放在一个 Lambda 中,因为我担心计数可能会在访问被拒绝之前发生。但是考虑到 lambda@edge 有执行时间限制

文档可用 here

当用户请求文件时,会出现查看器请求。如果该文件在缓存中,则会出现查看器响应。没有来源请求。因此,您应该根据查看者的请求对您的用户进行身份验证。

当文件不在缓存中时,有一个原始请求。这是从S3下载文件的时候。

您可以在单个 Lamda@Edge 中拥有逻辑,但您也可以:

  • 根据查看者请求对用户进行身份验证。
  • 计算查看者响应的下载量。无论缓存命中与否,都将触发查看器响应事件,但当来源 returns HTTP 状态代码为 400 或更高时不会触发。