CloudFront 可以触发 Lambda @Edge 函数的事件 - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

CloudFront 可以触发 Lambda @Edge 函数的事件

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


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

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

查看器请求

该函数在 CloudFront 收到查看者的请求时执行,然后再检查请求的对象是否在 CloudFront 缓存中。

源请求

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

源响应

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

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

  • 当请求的文件在 CloudFront 缓存中且未过期时。

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

查看器响应

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

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

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

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

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

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

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

注意

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