Amazon CloudFront
开发人员指南 (API 版本 2016-09-29)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

可触发 Lambda 函数的 CloudFront 事件

对于 CloudFront 分配中的每个缓存行为,您最多可以添加 4 个触发器(关联),以便在发生特定 CloudFront 事件时导致执行 Lambda 函数。CloudFront 触发器可以基于 4 个 CloudFront 事件之一,如下图所示。


					显示与 CloudFront 集成的 Lambda 函数的 CloudFront 触发器事件的概念图。

可用于触发 Lambda@Edge 函数的 CloudFront 事件如下所示:

查看器请求

当 CloudFront 收到查看器的请求但还未检查请求的对象是否在边缘缓存中时,该函数会执行。

源请求

只有 在 CloudFront 将请求转发到源时,才会执行该函数。当请求的对象在边缘缓存中时,该函数不会执行。

源响应

在 CloudFront 收到来自源的响应之后及它将对象缓存在响应中之前,该函数会执行。请注意,即使从源返回了错误,该函数仍会执行。

在以下情况下该函数不会执行:

  • 当请求的文件在边缘缓存中时

  • 当从由源请求事件触发的函数中生成响应时

查看器响应

在将请求的文件返回到查看器之前,该函数会执行。请注意,无论文件是否已在边缘缓存中,该函数都会执行。

在以下情况下该函数不会执行:

  • 当源返回 400 或更高的 HTTP 状态代码时

  • 当返回自定义错误页面时

  • 当从由查看器请求事件触发的函数中生成响应时

  • 在 CloudFront 将 HTTP 请求自动重定向到 HTTPS 时(在 查看器协议策略 的值为将 HTTP 重定向到 HTTPS 时)

当对同一个缓存行为添加多个触发器时,您可以使用它们运行同一个函数或对每个触发器运行不同的函数。也可以将同一个函数与多个分配关联。

注意

在 CloudFront 事件触发执行 Lambda 函数时,必须先完成该函数,然后 CloudFront 才能继续操作。例如,如果 CloudFront 查看器请求事件触发 Lambda 函数,在 Lambda 函数完成运行之前,CloudFront 不会将响应返回到查看器或将请求转发到源。这意味着触发 Lambda 函数的每个请求均会增加请求的延迟,因此您可能希望该函数尽快执行。