我在AWS上有一个pythonic无服务器项目,其中多个服务包含在单个存储库(monorepo)中,如下所示:
/
serverless.yml
/service1
lambda_handler.py
/service2
lambda_handler.py
/general
__init__.py
utils.py
“一般”是在不同服务之间共享的软件包,因此我们必须在根目录中使用单个“ serverless.yml”文件(否则将不会部署)。
我们有两个困难:
单个“ serverless.yml”可能太凌乱且难以维护,并且阻止了我们使用全局配置(这可能非常有用)。
取消单个服务很复杂。我想“打包”功能可能会有所帮助,但我不确定如何正确使用它。
在这种情况下有什么建议或最佳做法吗?
答案 0 :(得分:1)
每个服务最好使用单独的serverless.yml文件。要使用共享代码,
您可以将代码转换为库,并将其用作依赖项,并通过软件包管理器为类似于库的每个单独服务进行安装。 (这很有用,因为更新通用代码的版本不会影响其他服务)
将共享代码保存在不同的存储库中,并使用git submodule进行个性化服务。
有关更多信息,请参阅我最初考虑无服务器的文章Can we share code between microservices。