【问题标题】:AWS Lambda@Edge/Cloudfront execution flowAWS Lambda@Edge/Cloudfront 执行流程
【发布时间】:2022-01-01 18:52:57
【问题描述】:

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

基本上,流程如下:

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

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

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

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-cloudfront


    【解决方案1】:

    文档可通过here获取。

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

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

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

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

    【讨论】:

    • 好的,注意到了。谢谢您的帮助。目前,Lambda@Edge 正在通过端点调用普通 Lambda(由于 lambda 层访问限制)-> 然后检查用户 Authorization 标头并将某些状态返回给 Lambda@Edge。
    猜你喜欢
    • 2018-06-17
    • 2019-02-04
    • 2020-04-10
    • 1970-01-01
    • 2023-04-05
    • 2020-12-08
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多