我目前有两个Lambda @ Edge函数:
当前流量为:
viewer request -> language-redirect
if 302 -> viewer response
if not 302 -> pass on to CloudFront -> HSTS -> viewer response
是否可以将两个功能合并为一个功能(合并的功能),每个查看器请求仅调用一次功能?
viewer request -> combined
if 302 -> viewer response
if not 302 -> pass on to CloudFront -> combined -> viewer response
目标是一次调用同一函数,而不一次调用同一函数。
答案 0 :(得分:2)
CloudFront的Lambda @ Edge增强功能有4个不同的触发事件。他们与缓存的交互以粗体显示,并在以后变得很重要:
可以正确地编写一个Lambda函数以了解它在事务周期内的何处被触发,可以在这些点的任意组合处进行触发-但由于这些事件都在不同的时间发生,因此一次调用触发函数将无法处理多个事件。
但是,请注意上方的粗体字。在许多情况下,您可以通过使用原始端触发器来大幅减少触发器调用的次数。如上所述,使用这些触发器会导致触发器的响应可缓存-因此,当您的重定向触发器触发时,如果它生成了重定向,则可以对重定向进行缓存,并且下一个请求不需要在以下位置调用触发器所有。同样,将HSTS标头添加到源响应触发器中的可缓存响应中意味着将来的缓存命中将返回带有HSTS标头的修改后响应,而不会触发触发器。