Lambda@edge 轻松入手,以低延迟响应最终用户

2020-06-01 14:06

不是什么花都可以代表爱情,玫瑰做到了,

不是什么石头都能代表永恒,钻石做到了,

不需要预置和管理服务器,您就可以在靠近最终用户的站点运行代码,以低延迟响应您的最终用户,Lambda@Edge 做到了!

您只需将您的 Node.js 代码上传到 Amazon Lambda,并部署到 Lambda@edge ,Lambda 会在靠近最终用户的 Amazon Web Services 站点上自动运行和伸缩代码,从而改善延迟、减少原始负载,实现高可用性。

您的代码由 Amazon CloudFront 事件触发,Amazon CloudFront 是一种全球内容分发网络(CDN)服务,可以安全地以低延迟和高传输速度向浏览者分发数据、视频、应用程序和API。

如何轻松入手 Lambda@Edge?

身为伊克罗德的解决方案架构师专业团队一员,编号018,现在和大家分享一个Demo,利用 Lambda@edge Origin Response 来展示 Lambda@edge 的执行情况。


架构示意图:






Step1用户请求内容到 CloudFront

Step2:CloudFront 将请求转发给 Server

Step3:Server 响应内容并 Cache 到 CloudFront

Step4:Origin Response Trigger 执行 Lambda 函数

Step5:Lambda@edge 将执行结果返回给 CloudFront

Step6:CloudFront 将接收到的内容返回给用户




前期准备



创建EC2,并安装配置Nginx,配置Cloudfront并将其源设定为EC2 DNS

配置完后准备页面,如下图所示:

开始Demo


我们此次 Demo 的目的是展示如何通过 Lambda@edge 修改 Origin Response 增加Cache-Control 参数。以下是具体步骤:


Step1:

创建 Lambda 函数



代码如下:


'use strict';





// 利用Lambda@edge修改Origin Response 参数,增加Cache-Control


exports.handler = (event, context, callback) => {


   const { response } = event.Records[0].cf;


   const { headers } = response;




   const CacheControl = 'Cache-Control';


   const defaultTimeToLive = 3600; // 3600 Seconds




   if (response.status === '200') {


    if (!headers[CacheControl.toLowerCase()]) {


      headers[CacheControl.toLowerCase()] = [{


        key: CacheControl,


        value: `public, max-age=${defaultTimeToLive}`,


      }];


    }


   }




   callback(null, response);


};



Step2:

测试 lambda 函数


温馨提示:AWS lambda 测试库有很多已经写好的测试用例,小伙伴们可以根据自己的需求选择测试用例。



我们选用 Modify Response Header 做测



测试用例生成后,选择 Test 测试程序执行,看到 succeeded 的界面,我们基本就验证了此 Lambda 可以正常部署了。



Step3:

部署 Lambda@edge



选择想要部署的Distribution。



选择触发为 Origin Response,并点击部署。

温馨提示:此处可能因为 Role 权限不足导致无法部署,不过接下来这篇参考文档就能轻松解决问题。

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-edge-permissions.html



Step4:

查看部署

成功部署后,我们可以在 CloudFront 界面查看 Lambda 的部署情况,浏览到页面并点击Edit。



从下图我们可以看到已经成功部署:



Step5:

刷新浏览器查看,Cache-Control 有没有添加进去:


可以看到,Cache-Control 成功添加。



云代理伙伴
扫描关注微信公众号
获取更多云端资讯
联系我们
——

模板表单-2(1)

  • 姓名*

  • 电话*

  • 邮箱*

  • 职称*

  • 公司*

  • 地址*

  • 需求*

  • * 点击提交,即表示您同意我们存储和处理您提交的个人信息,以向您提供所请求的内容,该信息仅供公司提供服务使用。您的信息受到相关法律的安全保护。