Apple Silicon构建x86_64架构AWS SAM镜像部署Lambda失败求助
在Apple M1 Silicon上构建AWS SAM x86_64镜像部署包失败的解决方案
问题详情
在Apple M1 Silicon设备上,针对x86_64架构构建AWS SAM Hello World示例的Image(Docker)部署包时,sam build命令执行失败。SAM底层依赖Docker构建镜像,但Mac环境下无法正常运行;相同步骤在AWS x86 Linux EC2实例上可成功完成。尝试在Mac的Docker中运行x86 AWS Linux实现docker-in-docker未成功。
操作步骤
- 通过
sam init创建基于python3.11、Image类型的HelloWorld项目(项目名s3watch-image) - 执行
sam build时报错:
failed to export image: NotFound: content digest sha256:d40a1d2caa9d01b32d5f0ce81782af06f49786c01729d03c6450ad78b06654c7: not found
环境信息
- MacOS Sequoia 15.1.1
- SAM CLI版本1.131.0
- Docker Engine 27.3.1
- AWS区域us-east-1
- Zip部署方式可正常完成
解决方案
1. 直接在构建命令中指定平台参数
执行构建时强制指定x86_64架构,无需修改项目模板:
sam build --platform linux/amd64
2. 在SAM模板中配置默认平台
修改项目根目录下的template.yaml,为Image类型的函数添加Platform参数,永久指定构建架构:
Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: PackageType: Image ImageConfig: Command: ["app.lambda_handler"] Platform: "linux/amd64" # 指定x86_64平台
保存后重新执行sam build。
3. 启用Docker Desktop的Rosetta模拟
开启Rosetta可以让Docker更高效地模拟x86_64环境:
- 打开Docker Desktop,进入Settings > Features in development
- 勾选Use Rosetta for x86/amd64 emulation on Apple Silicon
- 重启Docker Desktop后重试
sam build
4. 清理Docker缓存后重试
缓存的镜像可能存在架构不兼容问题,清理后重新构建:
docker system prune -a sam build --platform linux/amd64
内容的提问来源于stack exchange,提问作者vy32
相关产品推荐
相关产品推荐

