CloudFront Functions 与 Lambda@Edge 之间的区别
CloudFront Functions 和 Lambda@Edge 都提供了一种运行代码以响应 CloudFront 事件的方法。
CloudFront Functions 非常适合用于以下应用场景的轻量级短期运行的函数:
-
缓存键标准化 – 转变 HTTP 请求属性(标头、查询字符串、Cookie,甚至是 URL 路径)以创建合适的缓存键,这可以提高您的缓存命中率。
-
标头操作 – 在请求或响应中插入、修改或删除 HTTP 标头。例如,您可以为每个请求添加
True-Client-IP
标头。 -
URL 重定向或重写 – 根据请求中的信息将查看器重定向到其他页面,或者将所有请求从一个路径重写到另一个路径。
-
请求授权 – 通过检查授权标头或其他请求元数据来验证哈希授权令牌,例如 JSON Web 令牌(JWT,JSON Web Token)。
要开始使用 CloudFront Functions,请参阅使用 CloudFront Functions 在边缘进行自定义。
Lambda @Edge 非常适合以下应用场景:
-
需要几毫秒或更长时间才能完成的函数
-
需要可调节 CPU 或内存的函数
-
依赖于第三方库(包括 Amazon SDK,用于与其他Amazon Web Services 服务服务集成)的函数
-
需要网络访问权限以使用外部服务进行处理的函数
-
需要文件系统访问权限或访问 HTTP 请求正文的函数
要开始使用 Lambda@Edge,请参阅使用 Lambda@Edge 在边缘进行自定义。
为了帮助您根据自己的应用场景来选择选项,请使用下表来了解 CloudFront Functions 与 Lambda @Edge 之间的区别。
CloudFront Functions | Lambda@Edge | |
---|---|---|
编程语言 | JavaScript(兼容 ECMAScript 5.1) | Node.js 和 Python |
事件来源 |
|
|
是 CloudFront KeyValueStore 仅支持 JavaScript 运行时 2.0 |
否 |
|
扩展 | 每秒 10000000 个请求或更多 | 每个区域每秒最多 10000 个请求 |
函数持续时间 | 亚毫秒 |
最长 5 秒(查看器请求和查看器响应) 最长 30 秒(源请求和源响应) |
最大函数内存大小 |
2 MB |
128 MB(查看器请求和查看器响应) 10240 MB(10 GB)(源请求和源响应) 有关更多信息,请参阅 有关 Lambda@Edge 的配额。 |
函数代码和包含的库的最大大小 | 10 KB |
1 MB(查看器请求和查看器响应) 50 MB(源请求和源响应) |
网络访问 | 否 | 是 |
文件系统访问 | 否 | 是 |
访问请求正文 | 否 | 是 |
访问地理位置和设备数据 | 是 |
否(查看器请求和查看器响应) 是(源请求和源响应) |
可以完全在 CloudFront 内构建和测试 | 是 | 否 |
函数日志记录和指标 | 是 | 是 |
定价 | 提供免费套餐;按请求收费 | 没有免费套餐;按请求和函数持续时间收费 |