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

AWS Lambda中Selenium Manager无法运行问题求助

问题

我尝试在AWS Lambda上运行一个使用Selenium和Chromedriver的函数,已上传包含Selenium v4.13和Chromedriver v2.24的层。我了解该版本Selenium自带Selenium Manager,可帮助查找Chrome可执行文件。以下代码片段在本地可正常运行,但在AWS Lambda上无法执行:

import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# chrome配置
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("prefs", {
    "download.default_directory": '/tmp',  # 设置临时下载目录
    "download.prompt_for_download": False,
    "download.directory_upgrade": True,
    "safebrowsing.enabled": True
})

# 使用Chrome浏览器
driver = webdriver.Chrome(options=chrome_options)

try:
    # 业务代码

测试Lambda后收到如下错误信息:

Response { "errorMessage": "Message: Unable to obtain driver for chrome using Selenium Manager.; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
", "errorType": "NoSuchDriverException",

我已查看错误提示的官方文档,但由于使用的是Selenium v4.13,理论上不应出现该问题,请问有解决思路吗?

解决思路
  • 补充Chrome浏览器本体:Selenium Manager仅负责匹配驱动,Lambda默认运行环境(如Amazon Linux 2)未预装Chrome浏览器。需将适配Lambda架构(x86_64/arm64)的Chrome二进制文件打包进层或部署包,确保文件路径可被Selenium识别。
  • 同步Chromedriver与Chrome版本:你使用的Chromedriver v2.24版本过旧,与Selenium 4.13及新版Chrome兼容性极差。建议删除自行上传的Chromedriver,让Selenium Manager自动下载对应版本的驱动;若手动指定,需严格保证Chromedriver与Chrome版本一致。
  • 配置Lambda网络权限:Selenium Manager需联网下载驱动,若Lambda执行角色无公网访问权限(如VPC限制出站流量),会导致驱动下载失败。检查Lambda的VPC配置,确保其可访问驱动下载源,或为执行角色添加出站访问权限。
  • 指定Chrome二进制文件路径:若已将Chrome打包进层,需在ChromeOptions中明确指定Chrome的执行路径,示例代码:
    chrome_options.binary_location = '/opt/chrome/chrome'  # 假设层内Chrome存放于/opt/chrome目录
    
  • 添加无头模式及Lambda适配参数:Lambda为无界面环境,必须开启Chrome无头模式,并添加适配参数避免启动失败,修改后的ChromeOptions配置:
    chrome_options.add_argument('--headless=new')
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_argument('--disable-gpu')
    
  • 校验层文件结构:Lambda层解压后文件会存放于/opt目录,需确保Selenium模块路径符合Lambda的Python版本要求(如/opt/python/lib/python3.9/site-packages,对应Python 3.9),同时保证Chrome二进制文件具备执行权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:53:14