【问题标题】:AWS multiple Lambda in same projectAWS 多个 Lambda 在同一个项目中
【发布时间】:2018-07-26 02:16:57
【问题描述】:

我的团队正在创建一个遵循无服务器架构的项目,我们正在使用 AWS Lambda、NodeJS 和无服务器框架。 该应用程序将是一组服务,每个服务都将作为一个单独的函数进行处理。

我发现了在同一个项目下组合多个函数然后使用云形成一次部署所有的示例,但是存在一些我们不希望的缺陷,例如为每个 lambda 函数部署不同模块的资源, 这将导致一些冗余,如果我们想更改一个文件,它不会反映在所有 lamda 函数中,因为它是托管 lamda 函数的本地函数

https://github.com/serverless/examples/tree/master/aws-node-rest-api-with-dynamodb

我的问题: 您知道组织包含多个功能的项目的最佳方式吗?每个功能都有单独的.yaml 和配置,能够在需要时部署所有这些功能或指定要部署的选择性更新功能?

【问题讨论】:

  • 您能否详细说明为什么使用一个包含多个函数的 yaml 文件不适合您?这将集中您的部署,真正让您的生活更轻松。你遇到了什么缺陷?
  • @GalBashan 感谢您的评论,我更新了帖子并表达了我的担忧,我们还需要通过单独隔离每个服务并且它们之间没有耦合来遵循微服务方式
  • 查看您描述的问题,在仍然使用无服务器和1个yaml文件的情况下有解决方案:1.您可以将资源设置为特定功能,而不是整个项目2.您可以部署单个使用 sls deploy 函数的函数,因此一个文件的更改不会导致对所有人的 dwployment 这有帮助还是我遗漏了什么?

标签: aws-lambda nodes aws-sdk


【解决方案1】:

我想我找到了一种很好的方法,就像这里提到的那样:https://serverless.readme.io/docs/project-structure

我创建了一个包含一些 Labmda 函数的服务,每个函数都包含在一个单独的文件夹中,我还在根级别有一个 lib 文件夹,其中包含可以在我的 Lambda 函数中使用的所有常用模块。

所以我的结构看起来像:

Root ---
      functions----
               function1
               function2
      libs---
      tests--
      resources 
serverless.yml (root level)

在我的 yml 文件中,我用相对路径指向 Lamdas,例如:

functions:
  hello1:
    handler: functions/function1/hello1.hello

现在我可以使用一个无服务器命令部署所有功能,或者选择性地部署更改功能的特殊性

而部署的Lamda将只包含所需的代码

【讨论】:

    猜你喜欢
    • 2020-08-27
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多