为 Scikit-image 构建自定义 AWS Lambda 层

2023-11-27

Outline:我需要使用scikit-image在一些 AWS lambda 函数内部,所以我希望构建一个自定义 AWS lambda 层,其中包含scikit-image.

我的问题一般应该适用于任何 python 模块,尤其是 scikit-learn,或者我认为一般的任何自定义层。


背景:经过大量谷歌搜索和阅读后,最好的方法似乎是使用 docker 在本地运行 AWS lambda 运行时,然后在其中安装/编译 scikit-image (或您正在寻找的任何模块)。完成后,您可以将其作为自定义层上传/安装到 AWS。

这在概念上非常简单,但我在最佳实践方法上遇到了一些困难。我已经做到了这一点,但不确定我是否以最好/正确/最佳/安全的方式做到这一点......有数百万篇关于此问题的博客文章略有不同,AWS 文档本身(恕我直言)太详细了,但跳过了一些基本问题.

我一直在尝试基本上关注两个很好的中等帖子,here and here...向那些家伙致敬。


我的主要问题是:

  1. 哪里是找到最新 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 映像,以确保安全性和最新性。

  1. 是AWS lambda运行时here,链接到this AMI,泊坞窗图像?如果是这样(或不是),您如何下载它以在本地运行?
  2. 如何确保知道何时可能需要重建图层,因为亚马逊更改了 AWS lambda 运行时,这会破坏您使用旧运行时的层?
  3. 是不是建的比较好(在 scikit-image 的情况下编译)pip 安装在 docker AIM 容器内的模块,或者只是告诉 pip 下载预构建的版本并希望/相信它会获得最适合您正在运行的 AMI 的编译库?

基本上我在这里关心的是稳定性和性能。我想确保在这种情况下为 scikit-image 编译的库尽可能针对 AMI 容器进行优化。

  1. 直接下载并使用是否更好AWS SAM要做这一切?(看起来有点矫枉过正和复杂,但它看起来确实可以确保您始终使用“正确的”AMI docker 容器)
  2. 是否有任何(好的、值得信赖的)预建 lambda 层的存储库(这可能会让这一切变得毫无意义)?我看了看,但没有找到。

...感谢您的任何建议、想法和评论!


有趣的几天来解决这个问题。 ...希望下面的答案能够对任何努力弄清楚如何制作自定义层(适用于 python 以及其他语言)的人有所帮助。


哪里是找到最新 AWS AMI docker 映像的最佳位置?

正如 Greg 上面指出的,用于构建层的“正确”docker 镜像在哪里,答案就在这里:lambci/lambda:build-python3.7。这是他们使用的 docker 镜像的官方 SAM 存储库。

所有 AWS lambda 运行时环境(而不仅仅是 Python)的完整列表是here


构建您自己的 AWS lambda 层的最佳方法是什么? ...构建自定义 python 模块层的最佳方法是什么?

迄今为止,我发现的最好方法是使用AWS SAM 结合经过一些调整,我使用了great blog here.

需要进行调整是因为(在我写这篇文章时)AWS SAM 允许您定义层,但实际上不会为你构建它们

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 Scikit-image 构建自定义 AWS Lambda 层 的相关文章

随机推荐

  • $ 不是函数 - jQuery 错误

    我已经很好地加载了 jQuery 我已经进行了四重检查 尽管我在 FireBug 中收到此错误 不是函数 并且我的代码不起作用 这是我的代码
  • 为什么 ActualSize 没有更新其在 WPF 上的值?

    我有以下代码
  • 更改 ASP.NET MVC 应用程序中的日期格式

    我需要将日期格式更改为dd MM yyyy 我收到客户端验证错误 因为 ASP NET MVC 日期格式与我在服务器上期望的格式不同 为了更改 ASP NET MVC 日期格式 我尝试了 网页配置
  • 检查成员是否存在,可能在基类中,C++11 版本

    In https stackoverflow com a 1967183 134841 提供了一个解决方案用于静态检查成员是否存在 可能在类型的子类中 template
  • Google Places API 与 Google 地图结果

    我在 Google 地图上看到了一些结果 但它不是通过 Google Places API 提供的 而谷歌地图显示 Storybook Land Black Horse Pike 蛋港镇 新泽西州 美国 为什么会出现这种差异 难道 Goog
  • 删除Python中以点分隔的字符串的最后一部分

    如何以优雅的方式转换字符串 例如 test test1 test2 test test3 test4 成这样的字符串 test test1 test test3 这里不需要正则表达式 Use str rsplit output inputs
  • 类型“{header:Header;}”的参数不可分配给类型“RequestOptionsArgs”的参数

    我在尝试在 HTTP POST GET 请求中传递标头时收到以下错误Argument of type header Header is not assignable to parameter of type RequestOptionsAr
  • R:哪个热图/图像可以获得没有任何树状图的行排序图?

    哪种套餐最适合仅对行进行排序的热图 图像 但不显示任何树状图或其他视觉混乱 只是两个轴上带有自动命名标签的二维彩色网格 除了基本的数字排序之外 我不需要花哨的聚类 数据是我想要可视化的 0 0 21 范围内的 39x10 数字表 我搜索了S
  • 如何保持 Intent 服务运行

    我有两个 Intentservice 的例子 一种是commonsware 书中的Download 示例 另一个是在http www vogella com articles AndroidServices article html ser
  • Android 中的反向音频文件

    我正处于开发这个应用程序的早期阶段 但研究它我已经遇到了一个问题 我需要能够向后播放音频文件 你知道喜欢揭示隐藏的消息 我没有在 Android 上处理音频的经验 也不知道这是否可能 我在这里发现了一个问题 它解决了java中的问题 点击这
  • 所有任务的单个工作线程还是多个特定工作线程?

    我正在使用 PyQt5 创建一个简单的 GUI 应用程序 其中我从 API 请求一些数据 然后使用这些数据填充 UI 的各种控件 我在 PyQt 中关注的有关工作线程的示例似乎都是子类QThread然后在重写中执行他们的业务逻辑run 方法
  • 将数据帧写入 csv 文件时解决错误“分隔符必须是 1 个字符的字符串”

    使用这个问题 Pandas 将数据帧写入 CSV 文件作为模型 我编写了以下代码来制作 csv 文件 df to csv Users Lab Desktop filteredwithheading txt sep s header True
  • C++ 中的 Realloc 等效项

    是的 另一个realloc vs std vector问题 我知道你要说什么 我同意 忘记手动内存分配 只需使用std vector 不幸的是 我的教授禁止我在这项作业中使用 STL 中的任何内容 所以是的 我有一个动态数组T我需要调整它的
  • 如何使用 Nokogiri 和 Ruby 解析 JavaScript

    我需要从网站中解析一个数组 我想要解析的 JavaScript 部分如下所示 arPic 0 http example org image1 jpg arPic 1 http example org image2 jpg arPic 2 h
  • Wix / MSI:无法卸载

    我为一个内部项目开发了一个 Wix 安装程序 但是完全偶然 我发现我无法在我的开发计算机上卸载该安装程序 因为我收到以下错误消息 您尝试使用的功能所在的网络资源不可用 有一个对话框指向我从功能安装的 msi 的路径 msi 在那里 但是它已
  • 类定义内的自引用

    如何在类定义中引用类对象 你能告诉我你会怎么做吗 或者更具体地说 如何在类方法的装饰器中传递类对象 这是一个简单的例子 我试图将我声明的第二个方法传递给第一个方法的装饰器 def decorate w def wrap f def call
  • preg_replace:错误的正则表达式==“未知修饰符”?

    我正在编造虚假的电子邮件地址 我只是想确保它们采用有效的电子邮件格式 因此我尝试删除不在以下集合中的任何字符 jusr email preg replace a zA Z0 9 g jusr email 我在 Windows 机器上没有遇到
  • Laravel 5 + AngularJS 跨域 CORS

    我到处寻找答案 但到目前为止没有任何效果 堆栈上列出的所有解决方案尚未被证明是足够的 我的 laravel 日志中没有任何错误形式的信息 我只得到标准 XMLHttpRequest cannot load http api domain d
  • 弹性项目是否应该溢出弹性容器而不是换行?

    我有这样的布局 A row 柔性容器 with a 确定尺寸 e g width 175px A flex item 与一个在definite flex basis e g flex basis content 这是不灵活的 例如flex
  • 为 Scikit-image 构建自定义 AWS Lambda 层

    Outline 我需要使用scikit image在一些 AWS lambda 函数内部 所以我希望构建一个自定义 AWS lambda 层 其中包含scikit image 我的问题一般应该适用于任何 python 模块 尤其是 scik