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

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

使用 Lambda@Edge 在边缘进行自定义

Lambda@Edge 是 Amazon Lambda 的扩展。Lambda @Edge 是一项计算服务,可让您执行自定义所交付内容的 CloudFront 函数。您可以在一个区域(美国东部(弗吉尼亚州北部))中编写 Node.js 或 Python 函数,然后在与查看器较为接近的全球 Amazon 位置执行它们,而无需预置或管理服务器。Lambda@Edge 会自动扩展,从每天几个请求到每秒数千个请求。在与查看器较为接近 Amazon 位置 (而不是源服务器) 上处理请求,可显著减少延迟并改善用户体验。

当您将 CloudFront 分配与 Lambda @Edge 函数关联时,会在边缘 CloudFront 位置拦截请求和响应。 CloudFront CloudFront 发生以下事件时,您可以执行 Lambda 函数:

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

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

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

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

Lambda@Edge 处理有很多用途。例如:

  • Lambda 函数可检查 Cookie 并重写 URL,以便用户可看到不同版本的站点以进行 A/B 测试。

  • CloudFront 通过检查User-Agent标题(其中包含有关设备的信息),可以根据查看者使用的设备将不同的对象返回给他们。例如, CloudFront 可以根据其设备的屏幕尺寸返回不同的图像。同样,该函数可以考虑Referer标题的值,并导致 CloudFront 将图像返回给可用分辨率最低的机器人。

  • 或者,您也可以检查 Cookie 中是否有其他条件。例如,在销售服装的零售网站上,如果您使用 Cookie 来指明用户为夹克选择了哪种颜色,则 Lambda 函数可以更改请求,从而 CloudFront返回所选颜色的夹克图片。

  • 当 CloudFront 查看者请求或原始请求事件发生时,Lambda 函数可以生成 HTTP 响应。

  • 函数可以检查标头或授权令牌,并插入标头以控制对内容的访问,然后再将请求 CloudFront 转发到您的源。

  • Lambda 函数还可以向外部资源发出网络调用,以确认用户凭证,或获取更多内容来自定义响应。

有关代码示例和更多示例,请参阅 Lambda@Edge 函数示例