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
相关产品推荐
相关产品推荐

