Outline:我需要使用scikit-image
在一些 AWS lambda 函数内部,所以我希望构建一个自定义 AWS lambda 层,其中包含scikit-image
.
我的问题一般应该适用于任何 python 模块,尤其是 scikit-learn,或者我认为一般的任何自定义层。
背景:经过大量谷歌搜索和阅读后,最好的方法似乎是使用 docker 在本地运行 AWS lambda 运行时,然后在其中安装/编译 scikit-image (或您正在寻找的任何模块)。完成后,您可以将其作为自定义层上传/安装到 AWS。
这在概念上非常简单,但我在最佳实践方法上遇到了一些困难。我已经做到了这一点,但不确定我是否以最好/正确/最佳/安全的方式做到这一点......有数百万篇关于此问题的博客文章略有不同,AWS 文档本身(恕我直言)太详细了,但跳过了一些基本问题.
我一直在尝试基本上关注两个很好的中等帖子,here and here...向那些家伙致敬。
我的主要问题是:
- 哪里是找到最新 AWS AMI docker 映像的最佳位置?
对于所谓的最新图像,有多个(甚至在亚马逊本身)多个位置/版本等。例如https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html, or https://cdn.amazonlinux.com/os-images/2.0.20190823.1/.
..这忽略了众多非亚马逊 github 托管的可能性,例如lambci/lambda:build-python3.6
来自中等帖子here, or onema/amazonlinux4lambda
from here.
我更喜欢使用亚马逊提供的 docker 映像,以确保安全性和最新性。
-
是AWS lambda运行时here,链接到this AMI,泊坞窗图像?如果是这样(或不是),您如何下载它以在本地运行?
-
如何确保知道何时可能需要重建图层,因为亚马逊更改了 AWS lambda 运行时,这会破坏您使用旧运行时的层?
-
是不是建的比较好(在 scikit-image 的情况下编译)pip 安装在 docker AIM 容器内的模块,或者只是告诉 pip 下载预构建的版本并希望/相信它会获得最适合您正在运行的 AMI 的编译库?
基本上我在这里关心的是稳定性和性能。我想确保在这种情况下为 scikit-image 编译的库尽可能针对 AMI 容器进行优化。
-
直接下载并使用是否更好AWS SAM要做这一切?(看起来有点矫枉过正和复杂,但它看起来确实可以确保您始终使用“正确的”AMI docker 容器)
-
是否有任何(好的、值得信赖的)预建 lambda 层的存储库(这可能会让这一切变得毫无意义)?我看了看,但没有找到。
...感谢您的任何建议、想法和评论!