You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacBook M2构建Docker镜像部署ARM64 AWS Lambda运行Selenium报错

解决ARM64架构AWS Lambda运行Selenium时的Exec格式错误

问题根源

你遇到的OSError: [Errno 8] Exec format error本质是可执行文件架构不兼容,而非Chrome版本不匹配:

  • Windows是x86_64架构,构建镜像时下载的是x86_64版本的Chrome和ChromeDriver,部署到同架构的Lambda自然正常
  • MacBook M2是ARM64架构,但你当前的Dockerfile仍在下载x86_64版本的Chrome/ChromeDriver,部署到ARM64 Lambda时,系统无法识别x86_64的二进制文件,就会触发格式错误

修复方案

1. 更换ARM64版本的基础镜像

原基础镜像是x86_64架构的,替换为AWS Lambda提供的ARM64 Python基础镜像:

# 替换为ARM64版本的Lambda Python基础镜像(以Python3.11为例)
FROM public.ecr.aws/lambda/python:3.11-arm64 as build

2. 下载ARM64架构的Chrome和ChromeDriver

修改curl命令,下载对应ARM64(aarch64)版本的文件:

RUN yum install -y unzip && \
    # 下载ARM64版本的ChromeDriver
    curl -Lo "/tmp/chromedriver.zip" "https://chromedriver.storage.googleapis.com/114.0.5735.90/chromedriver_linux_aarch64.zip" && \
    # 下载ARM64版本的Chrome快照(版本号与ChromeDriver保持一致)
    curl -Lo "/tmp/chrome-linux.zip" "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_arm64%2F1135561%2Fchrome-linux.zip?alt=media" && \
    unzip /tmp/chromedriver.zip -d /opt/ && \
    unzip /tmp/chrome-linux.zip -d /opt/

3. 构建镜像时指定平台(可选)

在M2 Mac上构建时,显式指定构建平台为linux/arm64,避免Docker自动适配出现问题:

docker build --platform linux/arm64 -t lambda-selenium-arm64 .

4. 保持后续COPY步骤不变

原有的COPY步骤无需修改:

COPY --from=build /opt/chrome-linux /opt/chrome
COPY --from=build /opt/chromedriver /opt/
...

部署修改后的镜像到ARM64架构的AWS Lambda,即可解决Exec格式错误问题。

内容的提问来源于stack exchange,提问作者Avisek Chakraborty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 15:05:39