Amazon Lambda与 CloudFront Lambda 一起使用 @Edge - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Lambda与 CloudFront Lambda 一起使用 @Edge

Lambda @Edge 是它的扩展Amazon Lambda,它允许你在亚马逊 CloudFront 边缘站点部署 Python 和 Node.js 函数。Lambda @Edge 的一个常见用例是使用函数来自定义 CloudFront 分发给最终用户的内容。在与查看器较为接近的位置(而不是原始服务器)调用这些函数,可显著减少延迟并改善用户体验。

当您将 CloudFront 分配与 Lambda @Edge 函数关联时,会在边缘 CloudFront 位置拦截请求和响应。 CloudFront CloudFront 然后通过发送事件来调用您的 Lambda 函数。当发生以下事件时,您可以 CloudFront 调用您的 Lambda 函数:

  • 当 CloudFront 收到观众的请求时(观看者请求)

  • 在将请求 CloudFront 转发到源站之前(源请求)

  • 当 CloudFront 收到来自来源的响应(源站响应)时

  • Before 向查看者 CloudFront 返回响应(查看者响应)


      显示可触发 Lambda 函数 CloudFront 的事件的概念图。
注意

Lambda@Edge 支持有限的一组运行时和功能。有关详情,请参阅 Amazon CloudFront 开发者指南中的 Lambda 函数要求和限制

以下是 CloudFront 事件的示例。

例 CloudFront 消息事件
{ "Records": [ { "cf": { "config": { "distributionId": "EDFDVBD6EXAMPLE" }, "request": { "clientIp": "2001:0db8:85a3:0:0:8a2e:0370:7334", "method": "GET", "uri": "/picture.jpg", "headers": { "host": [ { "key": "Host", "value": "d111111abcdef8.cloudfront.net" } ], "user-agent": [ { "key": "User-Agent", "value": "curl/7.51.0" } ] } } } } ] }

有关使用 Lambda @Edge 的更多信息,请参阅与 Lam CloudFront bda 一起使用 @Edge。