在具有共享代码的多个服务的monorepo上使用无服务器框架

时间:2018-06-30 21:45:51

标签: amazon-web-services aws-lambda serverless-framework serverless monorepo

我在AWS上有一个pythonic无服务器项目,其中多个服务包含在单个存储库(monorepo)中,如下所示:

/
serverless.yml
/service1
  lambda_handler.py
/service2
  lambda_handler.py
/general
  __init__.py
  utils.py

“一般”是在不同服务之间共享的软件包,因此我们必须在根目录中使用单个“ serverless.yml”文件(否则将不会部署)。

我们有两个困难:

  1. 单个“ serverless.yml”可能太凌乱且难以维护,并且阻止了我们使用全局配置(这可能非常有用)。

  2. 取消单个服务很复杂。我想“打包”功能可能会有所帮助,但我不确定如何正确使用它。

在这种情况下有什么建议或最佳做法吗?

1 个答案:

答案 0 :(得分:1)

每个服务最好使用单独的serverless.yml文件。要使用共享代码,

  1. 您可以将代码转换为库,并将其用作依赖项,并通过软件包管理器为类似于库的每个单独服务进行安装。 (这很有用,因为更新通用代码的版本不会影响其他服务)

  2. 将共享代码保存在不同的存储库中,并使用git submodule进行个性化服务。

有关更多信息,请参阅我最初考虑无服务器的文章Can we share code between microservices