

# CloudFront Functions 与 Lambda@Edge 之间的区别
<a name="edge-functions-choosing"></a>

CloudFront Functions 和 Lambda@Edge 都提供了一种运行代码以响应 CloudFront 事件的方法。

CloudFront Functions 非常适合用于以下应用场景的轻量级短期运行的函数：
+ **缓存键标准化** – 转变 HTTP 请求属性（标头、查询字符串、Cookie，甚至是 URL 路径）以创建合适的[缓存键](understanding-the-cache-key.md)，这可以提高您的缓存命中率。
+ **标头操作** – 在请求或响应中插入、修改或删除 HTTP 标头。例如，您可以为每个请求添加 `True-Client-IP` 标头。
+ **URL 重定向或重写** – 根据请求中的信息将查看器重定向到其他页面，或者将所有请求从一个路径重写到另一个路径。
+ **请求授权** – 通过检查授权标头或其他请求元数据来验证哈希授权令牌，例如 JSON Web 令牌（JWT，JSON Web Token）。

要开始使用 CloudFront Functions，请参阅[使用 CloudFront Functions 在边缘进行自定义](cloudfront-functions.md)。

Lambda @Edge 非常适合以下应用场景：
+ 需要几毫秒或更长时间才能完成的函数
+ 需要可调节 CPU 或内存的函数
+ 依赖于第三方库（包括 AWS SDK，用于与其他AWS 服务服务集成）的函数
+ 需要网络访问权限以使用外部服务进行处理的函数
+ 需要文件系统访问权限或访问 HTTP 请求正文的函数

要开始使用 Lambda@Edge，请参阅[使用 Lambda@Edge 在边缘进行自定义](lambda-at-the-edge.md)。

为了帮助您根据自己的应用场景来选择选项，请使用下表来了解 CloudFront Functions 与 Lambda @Edge 之间的区别。有关适用于源修改辅助方法的差异的信息，请参阅[在 CloudFront Functions 和 Lambda@Edge 之间进行选择](helper-functions-origin-modification.md#origin-modification-considerations)。


|  | CloudFront Functions | Lambda@Edge | 
| --- | --- | --- | 
| 编程语言 | JavaScript（兼容 ECMAScript 5.1） | Node.js 和 Python | 
| 事件来源 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudFront/latest/DeveloperGuide/edge-functions-choosing.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonCloudFront/latest/DeveloperGuide/edge-functions-choosing.html)  | 
|  支持 [Amazon CloudFront KeyValueStore](kvs-with-functions.md)  |  是 CloudFront KeyValueStore 仅支持 [JavaScript 运行时 2.0](functions-javascript-runtime-20.md)  |  否  | 
| 比例尺 | 每秒最多数百万个请求 | 每个区域每秒最多 10000 个请求 | 
| 函数持续时间 | 亚毫秒 |  最长 30 秒（查看器请求和查看器响应） 最长 30 秒（源请求和源响应）  | 
|  最大函数内存大小  | 2 MB |  128 MB（查看器请求和查看器响应） 10240 MB（10 GB）（源请求和源响应） 有关更多信息，请参阅 [有关 Lambda@Edge 的配额](cloudfront-limits.md#limits-lambda-at-edge)。  | 
| 函数代码和包含的库的最大大小 | 10 KB |  50 MB（查看器请求和查看器响应） 50 MB（源请求和源响应）  | 
| 网络访问 | 否 | 是 | 
| 文件系统访问 | 否 | 是 | 
| 访问请求正文 | 否 | 是 | 
| 访问地理位置和设备数据 | 是 |  否（查看器请求和查看器响应） 是（源请求和源响应）  | 
| 可以完全在 CloudFront 内构建和测试 | 是 | 否 | 
| 函数日志记录和指标 | 是 | 是 | 