【问题标题】:Sharing code between multiple AWS Lambdas in a SAM app using Docker Containers使用 Docker 容器在 SAM 应用程序中的多个 AWS Lambda 之间共享代码
【发布时间】:2021-04-03 13:54:05
【问题描述】:

我有一个包含多个 Lambda 的 SAM 应用程序和一些我想在它们之间共享的实用程序代码。使用 zip 文件打包 Lambda 时,可以使用 Lambda 层进行代码共享。但是,根据 AWS 文档,使用容器时不支持 Lambda 层。

定义为容器图像的函数不支持层。构建容器镜像时,可以将首选运行时和依赖项打包为镜像的一部分

我尝试将我的依赖项复制到一个单独的 docker 映像中,然后从我的 lambda dockerfile 中的该映像中提取,这在 AWS 博客文章 Working with Lambda layers and extensions in container images 中提出了建议。但是,在尝试调试或运行 sam local invoke 时,我只会收到 Unable to import module 'app': No module named '<my_dependency>' 错误。我在最终图像中验证了依赖项位于我的 python lambda 的 /opt/python/ 目录中,并尝试了其他文件夹结构,但没有运气。

有没有人能够让它工作?

【问题讨论】:

    标签: amazon-web-services docker aws-lambda containers sam


    【解决方案1】:

    我已经想通了。依赖项(例如,utils.py)确实需要位于/opt/python/ 文件夹中,但是当我尝试对此进行测试时,我是使用 docker cli 手动构建我的 docker 映像而不是使用 sam build 并且我有错误的图像标签。因此,调试器使用了我以前版本的 docker 映像,该映像无法正常工作。为了解决这个问题,我只需要在尝试本地调试我的 lambda 之前运行 sam build。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 2014-02-23
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      • 2020-12-31
      • 2015-09-25
      相关资源
      最近更新 更多