CDN网络CloudFront现支持在边缘大规模执行程序代码

AWS扩展其CDN服务CloudFront的功能,新推出CloudFront Functions,让用户能够在边缘,以低延迟且大规模地执行轻量级JavaScript函数,也就是说,用户现在可以操作流经CloudFront的请求和回应,执行像是基础身份验证,或是在边缘产生HTTP回应等工作。

Amazon CloudFront可以低延迟且快速地交付资料、视频、应用程序和API,但现在许多应用程序需要在边缘执行部分逻辑,而使用案例主要有两个类型,第一种是当对象不在缓存中,而且要执行较复杂的运算时,另一种则是能以简单函数处理的HTTP(S)请求和回应。

针对第一种边缘运算类型,AWS在2017年的时候推出Lambda@Edge服务,提供可编写程序且无服务器的边缘运算环境,让用户在边缘实例各种自定义的复杂运算,Lambda@Edge函数会当地区边缘缓存,通常是最靠近客户端附近CloudFront边缘地点的AWS地区。

而第二种类型是需要低成本且高性能的边缘程序化解决方案,因此AWS现在推出了CloudFront Functions来补充这个需求空缺,让用户可以在全球218个CloudFront边缘地点,执行轻量级JavaScript程序代码,CloudFront Functions的价格约是Lambda@Edge的六分之一。

CloudFront Functions非常适合处理轻量网页请求,像是能够用来操作缓存键值和范式,转换URL、标头、Cookie和查询字符串等HTTP请求属性,而且通过转换请求属性,用户可将多个请求范式成单一缓存键值项目,以显著提高缓存命中率。

CloudFront Functions还能用于URL改写和重定向,生成回应将请求重定向其他URL,或是以URL改写来进行A/B测试,另外,也能用于HTTP标头操作,包括查看、添加、修改和删除任何请求和回应标头。CloudFront Functions也可创建和验证用户生成的权限,以允许或拒绝请求,进而对通过CloudFront传递的内容进行管制和授权。

AWS解释,由于要满足现代应用程序需要的性能和规模,CloudFront Functions采用流程隔离模型,与Lambda@Edge所使用的虚拟机隔离模式非常不同,因此他们实施了一些限制,包括避免访问网络和文件系统,让函数的执行时间能够小于1毫秒,而且每秒可以处理数百万个请求,也不会对整个内容交付网络的性能产生明显的影响。

和Lambda@Edge相似的是,CloudFront Functions通过执行程序代码来回应CloudFront生成的事件,也就是说,当CloudFront收到来自浏览者的请求,JavaScript函数将会在CloudFront转发回应前触发,而且在CloudFront转送请求到请求来源(Origin)之前,以及CloudFront收到来源(Origin)回应前,还能进一步触发Lambda@Edge函数。

用户可以考量缓存以及要进行的操作,将CloudFront Functions和Lambda@Edge一并使用,而当用户需要一些CloudFront Functions所没有的Lambda@Edge功能,像是网络访问或是更长的执行时间,也可以在CloudFront缓存内容前后使用Lambda@Edge。