选择要触发函数的事件
当您决定使用哪个 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 会缓存对更改的源请求的响应。