VSCode本地调试AWS SAM Lambda时Docker运行报错问题
AWS SAM本地调试Lambda触发Docker
Filesharing has been cancelled 报错排查 问题表现
- 完成
AWS SAM、VSCodeAWS Toolkit配置后,sam build命令可正常执行 - 执行
sam local invoke调用函数、或通过VSCode调试模式启动函数时触发Docker相关错误,命令最终执行失败,退出码为1
报错日志核心特征
SAM构建完成后启动本地运行环境,跳过拉取流程直接使用本地已存储的
public.ecr.aws/sam/emulation-python3.9:rapid-1.51.0-x86_64模拟镜像,在挂载临时构建目录到容器阶段抛出异常,Docker API返回500内部服务错误,核心错误提示为Filesharing has been cancelled
已完成排查动作
- 已将
AppData\Local\Temp\aws-toolkit-vscode路径加入Docker文件共享配置列表 - 切换Docker引擎模式测试:开启WSL 2 based engine时触发其他不同报错,关闭WSL2引擎则稳定复现上述文件共享错误
- 已在公开技术社区、AWS官方文档检索相关问题,暂未找到有效解决方案
- 相同配置在个人笔记本设备上可正常运行,当前设备为企业办公环境,暂无法定位根因为权限管控还是Docker配置问题
可行排查方案
按优先级从高到低依次验证:
- 替换默认临时构建目录
企业环境通常会对Windows系统临时目录加严格的读写、跨进程挂载管控,执行本地调用时手动指定非系统盘的自定义目录作为构建挂载路径,避开默认Temp目录:
执行前重启Docker服务确保文件共享配置生效,排除系统临时目录的权限拦截问题。# 提前手动创建C:\sam-local-build目录,并将该目录加入Docker文件共享列表 sam local invoke --build-dir C:\sam-local-build - 独立验证Docker挂载能力
跳过SAM流程直接测试Docker目录挂载是否正常,排除SAM本身的配置问题:
如果该命令执行失败,说明问题出在Docker的文件共享配置或系统权限层,和SAM、AWS Toolkit无关。需要检查Docker File Sharing面板的路径勾选状态是否被企业组策略自动重置。docker run --rm -v C:\sam-local-build:/test public.ecr.aws/sam/emulation-python3.9:rapid-1.51.0-x86_64 ls /test - WSL2引擎适配
若使用WSL2 based引擎,不要将项目目录、构建目录放在Windows挂载的/mnt/c/路径下,需将代码迁移到WSL2发行版的原生文件系统中,同时确认WSL2的Docker集成权限未被安全软件拦截。 - 终端安全软件拦截校验
企业终端管控软件常默认拦截Docker的跨文件系统挂载行为,若权限允许可临时退出安全管控软件重试,若操作后恢复正常,需联系企业IT管理员将Docker Desktop、SAM CLI相关进程加入操作白名单。
内容的提问来源于stack exchange,提问作者IanPoli
相关产品推荐
相关产品推荐

