如何在AWS MWAA环境中配置Selenium与Chromium运行依赖?
解决方案
完全可以在AWS MWAA环境中成功配置运行Selenium所需的chromedriver和无头浏览器,不需要执行yum类系统级安装命令,可行方案如下:
- 方案1:直接通过pip安装预编译依赖包
在你的requirements.txt中添加以下3个依赖即可:
其中selenium chromium-binary chromedriver-binary-autochromium-binary会自动安装适配Amazon Linux 2架构的Chromium无头浏览器预编译二进制文件,chromedriver-binary-auto会自动匹配安装和当前Chromium版本对应的chromedriver,无需手动对齐版本,安装完成后可直接在Selenium代码中调用。 - 方案2:手动加载预上传二进制文件(适配版本兼容问题场景)
提前编译好适配Amazon Linux 2的Chromium和对应版本的chromedriver二进制文件,上传到MWAA关联的S3桶的dags或自定义依赖目录下,在DAG代码中手动指定二进制路径即可:from selenium import webdriver from selenium.webdriver.chrome.options import Options import os chrome_options = Options() # 必要的无头运行参数 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") # 指定Chromium二进制文件路径 chrome_options.binary_location = f"{os.environ.get('AIRFLOW_HOME')}/deps/chrome" # 初始化driver,指定chromedriver路径 driver = webdriver.Chrome( executable_path=f"{os.environ.get('AIRFLOW_HOME')}/deps/chromedriver", options=chrome_options )
注意事项
- MWAA工作节点运行时无sudo权限,所有依赖必须支持pip安装或可直接通过文件系统加载二进制文件,禁止调用系统级安装命令
- 启动Chromium时必须添加
--no-sandbox参数,否则会因权限不足启动失败
内容的提问来源于stack exchange,提问作者Lucas
相关产品推荐
相关产品推荐

