Selenium Read-only file system error on AWS Lambda

Viewed 355

I'm having an issue running my python selenium script on AWS Lambda. I keep getting this error.

[ERROR] OSError: [Errno 30] Read-only file system: '/home/sbx_user1051'
Traceback (most recent call last):
  File "/var/lang/lib/python3.8/imp.py", line 234, in load_module
    return load_source(name, filename, file)
  File "/var/lang/lib/python3.8/imp.py", line 171, in load_source
    module = _load(spec)
  File "<frozen importlib._bootstrap>", line 702, in _load
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 843, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/var/task/main.py", line 34, in <module>
    run(None, None)
  File "/var/task/main.py", line 25, in run
    driver = get_driver()
  File "/var/task/main.py", line 20, in get_driver
    service=Service(ChromeDriverManager().install()),
  File "/var/task/webdriver_manager/chrome.py", line 32, in install
    driver_path = self._get_driver_path(self.driver)
  File "/var/task/webdriver_manager/manager.py", line 31, in _get_driver_path
    binary_path = self.driver_cache.save_file_to_cache(file, browser_version,
  File "/var/task/webdriver_manager/driver_cache.py", line 27, in save_file_to_cache
    archive = save_file(file, path)
  File "/var/task/webdriver_manager/utils.py", line 37, in save_file
    os.makedirs(directory, exist_ok=True)
  File "/var/lang/lib/python3.8/os.py", line 213, in makedirs
    makedirs(head, exist_ok=exist_ok)
  File "/var/lang/lib/python3.8/os.py", line 213, in makedirs
    makedirs(head, exist_ok=exist_ok)
  File "/var/lang/lib/python3.8/os.py", line 213, in makedirs
    makedirs(head, exist_ok=exist_ok)
  [Previous line repeated 2 more times]
  File "/var/lang/lib/python3.8/os.py", line 223, in makedirs
    mkdir(name, mode)

I've tried adding --disk-cache-size-0 option because disable cache is deprecated.

I've tried switching from selenium_webdriver to selenium-wire and adding the {'request_storage_base_dir': '/tmp'} option to avoid saving in the home directory.

But nothing worked, and now I'm stumped.

from seleniumwire import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--start-maximized')
chrome_options.add_argument('--start-fullscreen')
chrome_options.add_argument('--single-process')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--disk-cache-size-0')

driver = webdriver.Chrome(
    options=chrome_options, 
    service=Service(ChromeDriverManager().install()),
    seleniumwire_options={'request_storage_base_dir': '/tmp'}
)
0 Answers
Related