首页 > 解决方案 > 模块化 aws lambda 代码的最佳实践

问题描述

我一直在检查互联网上的一些资源,AWS 中的所有 lambda 示例都非常基础,但我不确定我们将如何模块化具有多个依赖项的应用程序,例如在 java 中,我们通常有这样的结构

packages
  repository
  controllers
  ..
  ..

我们将与每个逻辑相关的代码放在包中,但现在在 AWS 中,这似乎更像是脚本,它将粘合各个部分,而不是我习惯的 OOP,所以我的问题是我们如何处理(如果应用)这种关系,因为我已经看到所有逻辑都在一个 lambda 中的代码,这似乎不是最好的方法,例如,如果我们有一些功能首先进行身份验证、授权、转换、调用外部 api、获取响应然后执行调用最终的休息端点,我们如何拆分它,例如将是相同的 lambda,其中包含包(目录)并且我们互相调用?或者我们有多个 lambda,每个都有一个目的?这将为每个 lambda 生成冷启动?

我在考虑使用层,但似乎很新,不确定这是否是生产就绪功能,并且似乎与重用代码更相关

标签: amazon-web-servicesaws-lambdaaws-lambda-layers

解决方案


通常,当您开发 Lambda 函数时,该函数应该有一个单一的用途(这将使函数相对较小)。

如果您有多个操作,通过将每个 Lambda 作为自己的函数,它将改善开发和部署体验。让一个开发人员处理该功能可以降低破坏不相关功能的风险,同时还允许他们仅部署他们已经处理过的功能。

为了在 API 的 Lambda 之间进行编排,人们倾向于使用API Gateway(用于与 Lambda 通信的客户端,或者在 Lambda 本身之间)。

关于您提到的任何共享依赖项/库Lambda 层是正确的方法。它将允许您集中应用程序共享的依赖项,而无需每次都将 Lambda 与依赖项的一个版本打包在一起。

有一篇关于在 AWS Lambda 上开发的最佳实践的文章应该提供额外的指导。


推荐阅读