re:Invent 2023 | 使用 Amazon Lambda Web 适配器解锁 Serverless Web 应用程序

关键字: [Amazon Web Services re:Invent 2023, Lambda Web Adapter, Lambda Web Adapter, Amazon Lambda, Web Applications, Existing Web Applications, Lambda Runtimes]

本文字数: 1900, 阅读完需: 10 分钟

视频

如视频不能正常播放,请前往bilibili观看本视频。>> https://www.bilibili.com/video/BV1mj41157rR

导读

Amazon Lambda Web Adapter 无缝集成了熟悉的框架和工具,使开发人员能够将现有的 Web 应用程序迁移到 Serverless 体系结构,并创建新 Serverless Web 应用程序。加入本论坛,探索 Amazon Lambda Web Adapter 背后的高端设计,并了解如何使用其强大的功能,如调试、利用流式响应和利用 SnapStart 的潜力。了解如何释放 Serverless Web 应用程序开发的全部潜力,并从行业专家那里获得宝贵的见解。

演讲精华

以下是小编为您整理的本次演讲的精华,共1600字,阅读时间大约是8分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。

贝蒂·钟(Betty Chung),来自亚马逊云科技中国开发者关系团队的高级开发者倡导者,热烈欢迎与会者参加关于运用亚马逊云科技Lambda Web Adapter发掘无服务器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是亚马逊云科技的无服务器计算服务,它能消除服务器管理,实现可扩展性,降低成本。然而,开发者们在适应这种基于事件的计算模式和处理事件、调整无状态性等方面仍面临挑战。此外,有些人在使用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并将响应流式传输。

此外,Web Adapter可以在不同的运行时空之间工作,如Python和Amazon Linux 2上的Docker镜像,而不仅仅是Node.js和Java。Howard还展示了如何利用Web Adapter将GPT-3聊天机器人Claude的反应以流式传输的方式返回给Python Lambda函数。

总的来说,Lambda Web Adapter是一个具有变革性的工具,有助于在Lambda上实现web应用的潜力,而无需进行大量代码更改。它提供了在不同环境中部署的灵活性,并结合了无服务器和容器的优势。Lambda Web Adapter的使用已经呈现出爆炸性的增长,使得许多客户能够轻松地将Java、Node.js和Python web应用迁移到Lambda。这打开了新的可能性,如跨运行时空的响应流。随着这个创新的Lambda Web Adapter的不断发展,无服务器web应用的未来充满了希望。

下面是一些演讲现场的精彩瞬间:

演示展示了CodeWhisper如何根据提示生成代码,以便在本地开发期间快速添加新功能,从而实现高效的调试和快速的迭代。

亚马逊云科技的Web适配器性能与使用其他流行Web框架(如FastAPI)相当,且在性能基准测试中表现优秀。

亚马逊云科技Lambda使用imgproxy技术实时调整图像大小,提高性能并降低存储成本。

Lambda的Java快照功能使企业客户能够轻松地在Lambda上运行传统的Spring应用程序,实现快速的冷启动。

总结

亚马逊云科技的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应用程序方面的潜力,而无需对现有设计进行重大调整。

演讲原文

https://blog.csdn.net/just2gooo/article/details/134789875

想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站!

2023亚马逊云科技re:Invent全球大会 - 官方网站

点击此处,一键获取亚马逊云科技全球最新产品/服务资讯!

点击此处,一键获取亚马逊云科技中国区最新产品/服务资讯!

即刻注册亚马逊云科技账户,开启云端之旅!

【免费】亚马逊云科技“100 余种核心云服务产品免费试用”

【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”

亚马逊云科技是谁?

亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者,自 2006 年以来一直以不断创新、技术领先、服务丰富、应用广泛而享誉业界。亚马逊云科技可以支持几乎云上任意工作负载。亚马逊云科技目前提供超过 200 项全功能的服务,涵盖计算、存储、网络、数据库、数据分析、机器人、机器学习与人工智能、物联网、移动、安全、混合云、虚拟现实与增强现实、媒体,以及应用开发、部署与管理等方面;基础设施遍及 31 个地理区域的 99 个可用区,并计划新建 4 个区域和 12 个可用区。全球数百万客户,从初创公司、中小企业,到大型企业和政府机构都信赖亚马逊云科技,通过亚马逊云科技的服务强化其基础设施,提高敏捷性,降低成本,加快创新,提升竞争力,实现业务成长和成功。

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值