选择要触发函数的事件 - Amazon CloudFront

选择要触发函数的事件

当您决定使用哪个 CloudFront 事件来触发 Lambda 函数时,请考虑以下因素:

我希望 CloudFront 缓存由 Lambda 函数更改的对象

要缓存由 Lambda 函数修改的对象,以便下次请求该对象时 CloudFront 可以从边缘站点提供该对象,请使用源请求源响应事件。

这样可减少源上的负载、减少后续请求的延迟,并降低对后续请求调用 Lambda@Edge 的成本。

例如,如果要添加、删除或更改由源返回的对象的标头,并且希望 CloudFront 缓存结果,请使用源响应事件。

我希望该函数针对每个请求执行

要针对 CloudFront 为分配接收的每个请求执行该函数,请使用查看器请求查看器响应事件。

只有在未将请求的对象缓存在边缘站点中且 CloudFront 将请求转发到源时,才会发生源请求和源响应事件。

我希望函数更改缓存键

要更改您要用作缓存基础的值,请使用查看器请求事件。

例如,如果某个函数将 URL 更改为在路径中包含语言缩写 (例如,由于用户从下拉列表中选择了其语言),请使用查看器请求事件:

  • 查看器请求中的 URL – https://example.com/en/index.html

  • 在请求来自德国的一个 IP 地址时的 URL – https://example.com/de/index.html

如果您要根据 Cookie 或请求标头缓存,则也使用查看器请求事件。

注意

如果该函数更改 Cookie 或标头,则将 CloudFront 配置为将请求的适用部分转发到源。有关更多信息,请参阅以下主题:

函数影响来自源的响应

要以影响源响应的方式更改请求,请使用源请求事件。

通常,大多数查看器请求事件都不会被转发到源。CloudFront 使用已在边缘缓存中的对象来响应请求。如果该函数基于源请求事件更改请求,则 CloudFront 会缓存对更改的源请求的响应。