繁体   English   中英

使用 Docker 容器在 SAM 应用程序中的多个 AWS Lambda 之间共享代码

[英]Sharing code between multiple AWS Lambdas in a SAM app using Docker Containers

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

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

I've tried copying my dependencies into a separate docker image, then pulling from that image in my lambda dockerfile, which is suggested in the AWS blog post 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/目录中,并尝试了其他文件夹结构,但没有运气。

有没有人能让这个工作?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM