我在 lambda 上使用 docker 容器映像来运行我的 ML 模型。我的 lambda 函数有一个 S3 触发器来获取图像。我正在尝试运行 lambda 函数,但收到此错误。有人可以帮帮我吗?
PS - 现在我知道 /tmp 是 lambda 中唯一可写的目录,但如何解决这个问题?
正如其他人提到的,/tmp
是任何 AWS Lambda 环境中唯一可写的目录,无论是否使用容器。
话虽如此,您应该移动整个库(在 lambda 运行时 -在容器镜像构建期间不起作用) 到该目录 - 这样库内的所有内容都保持连接 - 然后在 Lambda 的库路径环境中引用您的新库目录:LD_LIBRARY_PATH
应在 Lambda 的库路径环境中引用新库目录,因为 Lambda 会查看/opt/
默认目录;由于您刚刚将图书馆移至/tmp
,你还应该更新LD_LIBRARY_PATH
包含该位置。这可以在 Dockerfile 中完成:
# Set the LD_LIBRARY_PATH
ENV LD_LIBRARY_PATH="/opt/my-lib-folder/:$LD_LIBRARY_PATH"
或者在 Lambda 运行时:
os.environ['LD_LIBRARY_PATH'] = '/tmp/my-lib-folder:' + os.environ['LD_LIBRARY_PATH']
def lambda_handler(event, context):
# your code ...
如果还有问题,可能是你的库的链接问题,或者是你没有更新你的库LD_LIBRARY_PATH
正确。
EDIT:正如 @rok 所指出的,您无法在容器映像构建期间移动库,因为/tmp
文件夹将被 AWS 自动删除。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)