Docker环境下无法运行AWS SAM CLI的问题求助
解决AWS SAM CLI在Docker中运行时"Unable to import module 'index'"的问题
我之前遇到过一模一样的问题!核心根源在于当你在Docker容器里运行SAM CLI时,它会启动另一个Lambda运行时容器,这时候路径映射出现了错位:SAM所在的容器看到的代码路径是/usr/src/app,但Lambda运行时容器需要访问的是你宿主机上的实际代码目录,而不是容器内的虚拟路径,最终导致找不到index.js文件。
具体解决方案
修改你的docker run命令,添加--docker-volume-basedir参数,指定宿主机上当前代码目录的绝对路径:
docker run \ -v $(pwd):/usr/src/app \ -v /var/run/docker.sock:/var/run/docker.sock \ hello sam local invoke --docker-volume-basedir $(pwd) -t template.yml -e event.json HelloWorld
为什么这个方案有效?
SAM CLI在启动Lambda运行时容器时,会根据--docker-volume-basedir的值来挂载宿主机的真实目录到运行时容器中,而不是沿用SAM所在容器内的虚拟路径。这样运行时容器就能精准找到你的index.js文件了。
为什么之前的尝试没解决问题?
你调整权限、SELinux、运行模式这些操作,都是针对SAM本身所在的容器,但问题出在SAM启动的**子容器(Lambda运行时容器)**的路径映射上,所以这些操作无法触达核心问题点。
验证效果
运行修改后的命令,应该就能得到和本地测试一致的输出:
{"body":"Hello, World!"}
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

