AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将 AWS Lambda 与 CloudFront Lambda@Edge 结合使用

Lambda@Edge 允许您运行 Node.js Lambda 函数来自定义 CloudFront 提供的内容,从而在更靠近查看器的 AWS 位置执行函数。这些函数在不提供或管理服务器的情况下运行,以响应 CloudFront 事件。您可以在以下时间点使用 Lambda 函数来更改 CloudFront 请求和响应:

  • 在 CloudFront 收到查看器的请求之后 (查看器请求)

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

  • 在 CloudFront 收到来自源的响应之后 (源响应)

  • 在 CloudFront 将响应转发到查看器之前 (查看器响应)


      显示 CloudFront 事件如何能够触发 Lambda 函数的概念图。

您也可以生成对查看器的响应,而不必将请求发送到源。

例 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,您可以构建各种解决方案,例如:

  • 检查 Cookie,从而重写站点不同版本的 URL 以进行 A/B 测试。

  • 根据 User-Agent 标头将不同的对象发送给您的用户,该标头包含有关提交请求的设备的信息。例如,您可以根据用户的设备向用户发送分辨率不同的图像。

  • 检查标头或授权令牌,在将请求转发到源之前插入一个相应的标头并允许访问控制。

  • 添加、删除和修改标头,然后重写 URL 路径,将用户定向到缓存中的不同对象。

  • 生成新的 HTTP 响应,将未经身份验证的用户重定向到登录页面,直接从边缘创建和交付静态网页,或执行其他操作。有关更多信息,请参阅 Amazon CloudFront 开发人员指南 中的使用 Lambda 函数生成对查看器和源请求的 HTTP 响应

有关使用 Lambda@Edge 的更多信息,请参阅将 CloudFront 与 Lambda@Edge 结合使用