## 视频
<video src="https://dev-media.amazoncloud.cn/30-LibaiGenerate/31-LiBaiRebrandingVideo/BOA311-Unlocking_serverless_web_applications_with_AWS_Lambda_Web_Adapter-LBrebrandingWCaptionCN.mp4" class="bytemdVideo" controls="controls"></video>
## 导读
Amazon Lambda Web Adapter 无缝集成了熟悉的框架和工具,使开发人员能够将现有的 Web 应用程序迁移到 Serverless 体系结构,并创建新 Serverless Web 应用程序。加入本论坛,探索 Amazon Lambda Web Adapter 背后的高端设计,并了解如何使用其强大的功能,如调试、利用流式响应和利用 SnapStart 的潜力。了解如何释放 Serverless Web 应用程序开发的全部潜力,并从行业专家那里获得宝贵的见解。
## 演讲精华
<font color = "grey">以下是小编为您整理的本次演讲的精华,共1600字,阅读时间大约是8分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。</font>
贝蒂·钟(Betty Chung),来自亚马逊云科技中国开发者关系团队的高级开发者倡导者,热烈欢迎与会者参加关于运用亚马逊云科技Lambda Web Adapter发掘[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)Web应用潜力的研讨会。她非常高兴能与霍华德·孙(Howard Sun)一起合作,霍华德是亚马逊云科技中国区的资深解决方案架构师,不仅是最初创作Lambda Web Adapter的人,还在其开发过程中发挥了关键作用。霍华德将凭借自己的丰富实践经验为研讨会增色。他们的共同目标是为开发者展示Lambda Web Adapter的巨大潜力和优势,以及如何以前所未有的方式运营基于服务的应用。
在这次深入的研讨会上,他们将提供实用性的指导建议和生活实例,以便充分理解Lambda Web Adapter的各项功能。他们的讲述将从面对构建基于服务的Web应用所遇到的挑战开始。接着,霍华德将回顾他创造亚马逊云科技Lambda Web Adapter的过程以及在将Web应用迁移至Lambda和改进Lambda运行时的经验。最后,他们从开发者的角度出发,总结Lambda Web Adapter的优势、可能的应用场景以及他们在挖掘基于服务的Web应用潜力方面的经验教训。
首先,他们将探讨面临的第一个议题——在构建基于服务的Web应用中遇到的问题。众所周知,Lambda是亚马逊云科技的[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)计算服务,它能消除服务器管理,实现可扩展性,降低成本。然而,开发者们在适应这种基于事件的计算模式和处理事件、调整无状态性等方面仍面临挑战。此外,有些人在使用Lambda而非容器时,可能会对开发和调试工具的可用性感到不满。尽管面临这些困难,但开发者们也意识到,将Web应用迁移至Lambda将带来令人振奋的新机遇和益处。
该编程模型支持多种主流编程语言,例如Node.js、Python以及Java等。
尽管HTTP Lambda函数的代码和处理网络应用程序中的HTTP请求的代码存在差异,但开发人员也在寻找解决方案或工具来减少这些差异。一些开发者正在使用特定于框架的适配器将现有代码部署为Lambda函数。例如,Mangum将FastAPI应用程序包装成处理函数,并将事件有效载荷转换为FastAPI所需的形式。这简化了将网络应用程序无缝部署到Lambda的过程。
除了Mangum之外,还有其他流行的适配器包,如适用于Java的亚马逊云科技Lambda Java Container和适用于Node.js的亚马逊云科技Lambda Express。然而,将这些基于容器的网络应用程序直接移植到Lambda并不容易,因为开发人员需要修改代码以添加依赖项。此外,还担心这些适配器包的长期维护可能会引起便携性和可升级性问题。
尽管如此,开发人员可以通过使用Lambda Web Adapter将网络应用程序打包成Docker镜像来实现便携性。Lambda Web Adapter允许启动网络应用程序进程,而不是Lambda运行时进程。一旦健康检查通过,Web Adapter就会通知Lambda服务应用程序已初始化并准备好处理事件有效载荷和函数调用。
当Lambda调用函数时,Web适配器会将事件负载转换为HTTP请求并将其发送到Web应用程序。Web应用处理请求并返回响应,Web适配器将其转换回Lambda服务预期的JSON格式。此调用周期可以重复多次。Lambda Web适配器提供了一个额外的好处,即支持关闭阶段。当Lambda执行环境回收时,Lambda会向web进程发送SIGTERM消息,允许有足够的时间运行清理代码,如优雅地关闭数据库连接。
Howard展示了一个使用Web适配器和Dockerfile在Lambda上打包和运行Express应用的示例。Dockerfile将Web适配器二进制文件复制到特定的/opt/extensions目录,以便Lambda将其识别为扩展。相同的Docker镜像也可以在没有Lambda的情况下在EC2,ECS或EKS上正常运行。他随后快速演示了本地使用Nodemon迭代开发Express应用程序,立即查看保存的代码更改,以及使用GitHub Copilot生成新的路由代码。这说明了正常的高效本地开发体验。然后,该应用使用SAM部署到Lambda,只需几行配置即可-构建Docker镜像,将其推送到ECR,并创建与API Gateway链接的Lambda函数。具有Web适配器的相同应用程序代码在Lambda上无缝运行。
关于Web适配器的性能问题,Howard讨论了比较使用Web适配器的FastAPI应用程序和Mangum的性能测试结果。在数百次冷启动中,差异小于100ms,p50延迟完全相同。因此,Web适配器的性能与原生Lambda适配器库非常接近。
对于将现有web应用程序迁移到Lambda,Howard展示了通过将Web适配器添加到其Dockerfile中来部署imgproxy图像处理应用程序。eBay和Ollie等流行网站使用imgproxy来替换预先生成的所有重尺寸图像,以在飞行中调整大小。他还展示了使用Web适配器和快照支持在Lambda上运行Spring Boot Java应用程序。通过存储初始化应用程序的快照,将冷启动时间从5-6秒减少到1秒。这个组合使得企业客户可以轻松地将Java应用程序迁移到Lambda。
Howard强调,Web Adapter并不仅仅是在Lambda上运行web应用这么简单。近日,Lambda推出了HTTP响应流支持,Web Adapter可以将此功能应用于Python和Java等其他运行时环境。他以一个使用FastAPI的Lambda函数为例,展示了如何通过该函数调用[Amazon Rekognition](https://aws.amazon.com/cn/rekognition/?trk=cndc-detail)并将响应流式传输。
此外,Web Adapter可以在不同的运行时空之间工作,如Python和Amazon Linux 2上的Docker镜像,而不仅仅是Node.js和Java。Howard还展示了如何利用Web Adapter将GPT-3聊天机器人Claude的反应以流式传输的方式返回给Python Lambda函数。
总的来说,Lambda Web Adapter是一个具有变革性的工具,有助于在Lambda上实现web应用的潜力,而无需进行大量代码更改。它提供了在不同环境中部署的灵活性,并结合了[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)和容器的优势。Lambda Web Adapter的使用已经呈现出爆炸性的增长,使得许多客户能够轻松地将Java、Node.js和Python web应用迁移到Lambda。这打开了新的可能性,如跨运行时空的响应流。随着这个创新的Lambda Web Adapter的不断发展,[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)web应用的未来充满了希望。
**下面是一些演讲现场的精彩瞬间:**
演示展示了CodeWhisper如何根据提示生成代码,以便在本地开发期间快速添加新功能,从而实现高效的调试和快速的迭代。
![](https://d1trpeugzwbig5.cloudfront.net/BOA311-Unlocking_serverless_web_applications_with_AWS_Lambda_Web_Adapter/images/rebranded/BOA311-Unlocking_serverless_web_applications_with_AWS_Lambda_Web_Adapter_0.png)
亚马逊云科技的Web适配器性能与使用其他流行Web框架(如FastAPI)相当,且在性能基准测试中表现优秀。
![](https://d1trpeugzwbig5.cloudfront.net/BOA311-Unlocking_serverless_web_applications_with_AWS_Lambda_Web_Adapter/images/rebranded/BOA311-Unlocking_serverless_web_applications_with_AWS_Lambda_Web_Adapter_1.png)
亚马逊云科技Lambda使用imgproxy技术实时调整图像大小,提高性能并降低存储成本。
![](https://d1trpeugzwbig5.cloudfront.net/BOA311-Unlocking_serverless_web_applications_with_AWS_Lambda_Web_Adapter/images/rebranded/BOA311-Unlocking_serverless_web_applications_with_AWS_Lambda_Web_Adapter_2.png)
Lambda的Java快照功能使企业客户能够轻松地在Lambda上运行传统的Spring应用程序,实现快速的冷启动。
![](https://d1trpeugzwbig5.cloudfront.net/BOA311-Unlocking_serverless_web_applications_with_AWS_Lambda_Web_Adapter/images/rebranded/BOA311-Unlocking_serverless_web_applications_with_AWS_Lambda_Web_Adapter_3.png)
## 总结
亚马逊云科技的Lambda Web适配器使得开发者能够在Lambda上运行Web应用程序,而无需进行任何代码上的改动。在今年的re:Invent上,亚马逊云科技的Betty Chung和Howard Sun展示了Lambda Web适配器的性能表现。
演讲从在Lambda上构建基于服务的Web应用程序所面临的挑战开始,这些挑战包括转向事件驱动模型以及缺乏熟悉且有效的调试工具。虽然像Mangum这样的适配器包能够简化部署过程,但它们也存在诸如依赖性问题之类的弊端。
Howard分享了他发明Lambda Web适配器以连接Web应用程序与Lambda的经验。该适配器可以拦截请求,将其转换为Lambda事件,调用Web应用程序的Docker容器,然后返回响应。这使得能够将应用程序封装为容器,而无需对其进行任何修改。
他们还展示了如何使用Web适配器在Lambda上运行Node.js、Java Spring Boot和Python FastAPI应用程序的例子。此外,该适配器还支持响应流功能,这是Lambda原本所不具备的。
演讲总结了对如何在最小化代码改动的前提下将应用程序迁移到Lambda的方法。它强调了关于在Lambda上成功运行Web应用程序的客户反馈。通过使用Lambda Web适配器,开发者可以解锁Lambda在Web应用程序方面的潜力,而无需对现有设计进行重大调整。
## 演讲原文
## 想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站!
[2023亚马逊云科技re:Invent全球大会 - 官方网站](https://webinar.amazoncloud.cn/reInvent2023/?s=8739&smid=19458 "2023亚马逊云科技re:Invent全球大会 - 官方网站")
[点击此处](https://aws.amazon.com/cn/new/?trk=6dd7cc20-6afa-4abf-9359-2d6976ff9600&trk=cndc-detail "点击此处"),一键获取亚马逊云科技全球最新产品/服务资讯!
[点击此处](https://www.amazonaws.cn/new/?trk=2ab098aa-0793-48b1-85e6-a9d261bd8cd4&trk=cndc-detail "点击此处"),一键获取亚马逊云科技中国区最新产品/服务资讯!
## 即刻注册亚马逊云科技账户,开启云端之旅!
[【免费】亚马逊云科技“100 余种核心云服务产品免费试用”](https://aws.amazon.com/cn/campaigns/freecenter/?trk=f079813d-3a13-4a50-b67b-e31d930f36a4&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技“100 余种核心云服务产品免费试用“")
[【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”](https://www.amazonaws.cn/campaign/CloudService/?trk=2cdb6245-f491-42bc-b931-c1693fe92be1&sc_channel=el&trk=cndc-detail "【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用“")