BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

AWS发布Lambda@Edge,支持在CloudFront CND的边缘服务器上执行Node.js函数

| 作者 Daniel Bryant 关注 634 他的粉丝 ,译者 李梦 关注 0 他的粉丝 发布于 2017年7月28日. 估计阅读时间: 5 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

Amazon Web服务(AWS)发布了Lambda@Edge,让客户可以在全球的AWS站点运行Node.js Lambda函数,从而以非常低的延迟动态地响应最终用户。

开发者可以用Lambda@Edge将Node.js代码上传到AWS Lambda——Amazon的“serverless”服务,Lambda会在靠近最终用户的AWS站点上自动运行和伸缩代码,从而改善延迟、减少原始负载,实现高可用性。Lambda@Edge代码由Amazon CloudFront事件触发,Amazon CloudFront是一种全球内容分发网络(CDN) 服务,可以安全地以低延迟和高传输速度向浏览者分发数据、视频、应用程序和API。

有时最终用户会遍布全球,并且(理想情况)所有决策所需的所有信息都可以使用函数或请求从CloudFront获得,Lambda@Edge正是专为这种对延迟敏感的用例所做的优化。它可以让开发者实现以下功能。

  • 检查cookies和显式重写URL从而执行A/B测试。
  • 返回生成的动态内容,例如将未经身份验证的用户重定向到一个按需创建的登录页面。
  • 使用特定的对象作为响应,基于用户代理头文件定制用户看到的网站。
  • 添加、删除或修改头文件(受到以下限制)将用户引导到不同的缓存对象。
  • 修改或压缩头文件或URL来提高缓存利用率。
  • 将HTTP请求发送到其他互联网资源并使用结果定制响应(尽管开发人员应该小心地减少发出这些请求的额外延迟)。

Lambda@Edge函数的触发可以用来响应四种不同的CloudFront事件。

  • 查看器请求——该事件发生在互联网上的最终用户或设备向CloudFront发送一个HTTP(S)请求时,并且请求会抵达最接近该用户的站点。这个事件包含传入的HTTP请求。
  • 查看器响应——该事件发生在CloudFront边缘服务器准备对发出请求的最终用户或设备做出响应时。这个事件包含HTTP响应。
  • 原始请求——该事件发生在CloudFront边缘服务器的缓存中没有被请求的对象,并且查看器准备发送给原始后端(例如Amazon EC2、Application Load Balancer或Amazon S3)时。
  • 原始响应——该事件发生在CloudFront边缘服务器接收到一个来自原始后端的响应时。

下面来自AWS Lambda@Edge文档的图表可以帮助你在请求/响应周期中定位这些事件。

Lambda@Edge开发者应该熟悉标准AWS Lambda开发范例,而且必须在开发代码时遵循以下约束。

  • 运行环境——运行环境目前只支持Node.js中编写的函数,它为每个函数分配128MB的内存,没有内置的库,也没有访问/tmp的权限。
  • 超时设定——处理原始请求和原始响应事件的函数必须在3秒内完成,处理查看器请求和查看器响应事件的函数必须在1秒内完成。
  • Web服务访问——处理原始请求和原始响应事件的函数必须在3秒内完成,它可以访问AWS API和通过HTTP获取内容。这些请求总是与对原始请求或响应的请求同步。
  • 版本控制——在Lambda控制台更新代码之后,必须设置一套新的触发配置。开发人员需要等待复制完成。函数必须和版本号相关,$LATEST和别名都不适用。
  • 头文件——请查阅“头文件限制”来确定哪些头文件是可以访问的、受限制的、只读的和被列入黑名单的。

现在Lambda@Edge还没有提供免费体验,函数持续时间的计算是从代码开始运行到返回或者以其他方式终止,每GB-second收费$0.00005001。Lambda@Edge函数每次运行都有固定的128MB内存,每128MB-second收费$0.00000625125。注意Lambda@Edge函数以50ms为间隔进行测量,而不是标准的AWS Lambda 100ms间隔

关于AMS Lambda@Edge的更多信息,可以到Jeff Barr在AWS Blog的文章 “Lambda@Edge – Intelligent Processing of HTTP Requests at the Edge”、AWS Lambda@Edge产品文档开发指南中找到。

查看原文链接AWS Release Lambda@Edge, Enabling Node.js Functions to Execute at the Edge Alongside CloudFront CDN


感谢冬雨对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

标题有错 by 周 子琛

标题有错

Re: 标题有错 by Ding Alice

感谢反馈,Edge翻译成“边缘”是比较别扭,我们参考了AWS的文档,改成了“边缘服务器”。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT