Mac Silicon(arm64)上AWS SAM Cli本地运行Lambda函数失败求助
解决方案
1. 确认Docker的arm64运行状态
- 打开Docker Desktop,进入设置 > 开发中功能,勾选「使用新的虚拟化框架」,重启Docker。
- 执行命令验证架构:
docker system info | grep Architecture,输出必须是Architecture: aarch64,否则说明Docker仍在模拟x86模式。
2. 清理SAM与Docker的冗余数据
- 删除SAM本地构建缓存:
rm -rf .aws-sam/build - 清理Docker无效镜像、容器和卷:
docker system prune -a docker volume prune
3. 强制指定arm64 Lambda基础镜像
在_aws_sam/template.yml里给TestLambda明确配置arm64镜像,以Python为例:
Resources: TestLambda: Type: AWS::Serverless::Function Properties: Architectures: ["arm64"] PackageType: Image ImageUri: public.ecr.aws/lambda/python:3.12-arm64 ImageConfig: Command: ["你的.handler路径"]
其他语言替换对应arm64镜像,比如Node.js用public.ecr.aws/lambda/nodejs:20-arm64。
4. 排查镜像拉取的网络问题
- 先手动拉取镜像测试:
docker pull public.ecr.aws/lambda/python:3.12-arm64(替换成你用的镜像) - 如果拉取失败,关闭VPN/代理,或者在Docker设置里配置国内镜像加速器,解决ECR镜像访问的网络波动问题。
- 执行
sam configure确认区域设置正确,比如选us-east-1,避免跨区域拉取镜像的延迟。
5. 更新SAM CLI到最新版
用Homebrew更新:brew upgrade aws-sam-cli,旧版本SAM对arm64的镜像构建逻辑可能存在bug。
6. 补全系统依赖
- 安装Xcode命令行工具:
xcode-select --install,恢复系统后可能缺失部分编译依赖。 - 重置shell环境:
source ~/.zshrc(或~/.bashrc),确保Docker和SAM的路径指向arm64版本。
用户提供的报错日志:
Building Image Failed requests.exceptions.HTTPError: 502 Server Error: Bad Gateway
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

