首页 > 解决方案 > AWS Lambda 层如何与私有 conda 存储库一起使用?

问题描述

我使用 conda 并有一个私人 conda repo

一个函数可以使用的最大层数是五层。所以我不能把我的每一个私有 conda 包都上传为一个单独的层——因为函数可能需要使用超过 5 个

我不清楚层应该如何解决这个问题,或者它们是否不是为这类事情而设计的

我是否只有一个用于基本 conda 环境的 lambda 层,然后让 lambda 使用该层来导入我的私有 conda 包?或者我应该将我的整个函数作为一个新层本身上传,在那里我将使用我所有的私有 conda deps 在本地构建我的 conda python 应用程序,将它作为一个新层上传,然后有一个不同的函数调用它?

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

解决方案


您可以尝试将所有私有包构建到单独的单层中,然后将您自己的(单)层与您的函数一起使用。……这对你有用吗?(层没有限制,它们只需要包含单个包/模块)

如果您的基本 conda env 也有公共包,您还可以为该环境构建一个单独的层 - 所以在您的函数中,您将包括两层 - 一层用于基本 conda env,一层用于所有私有包。

使用我的代码,我将 conda 用于开发,但不用于部署。目前我已经构建并使用了一个包含 skimage 的私有层,但我用 lambda 本身构建了我所有的私有包,而不是将它们捆绑为一个层。但我已经考虑过将来会这样。

我还使用 AWS 的 SAM 进行构建和打包,这让事情变得容易多了。但我不确定使用 conda 而不是 pip 是否容易。

这是我写的关于使用 SAM 制作图层的帖子——如果你走那条路可能会有所帮助(......你现在可以使用 SAM 来构建/安装图层,但它需要一些手臂扭曲)


推荐阅读