AWS Lambda에서 Headless-Chromium을 사용할 때 발생한 오류
5516 단어 AWSLambda셀레늄headless-chromeAWS
This version of ChromeDriver only supports Chrome version
ChromeDriver에서 지원하지 않는 serverless-chrome을 사용하고 있습니다.
notes.txt에, 대응하는 ChromeDriver의 version가 써 있으므로 맞춘다.
ChromeDriver
ChromeDriver 버전이 73.0.3683.20인 경우 Chrome 버전이 73.0.3683인 모든 버전에 해당합니다( 참고 )
Headless-Chrome의 경우... 어때?
Layers를 사용하려고 Unnable to import module
Layers에 업로드하면/opt하에 전개된다. 공식 문서
파이썬의 경우를 예로 들면,/opt/python 부하가 import의 참조 범위가 되므로 업로드된 zip을 확장했을 때
/opt/python/selenium과 같이 되어 있지 않으면 참조할 수 없게 발생한다.
windows에서 zip 압축하여 'chromedriver' executable may have wrong permissions
맨 아래 코멘트
윈도우가 리눅스 파일 권한을 다룰 수 없기 때문에 발생합니까?
해결책은 linux에서 zip 압축하여 Layers나 S3에 업로드한다.
참고 : docker로 aws cli를 사용할 수있는 환경 만들기
"errorMessage": "Message: Service /tmp/bin/chromedriver unexpectedly exited. Status code was: 127\n", "errorType": "WebDriverException"
뭔가 여러가지 발생하는 조건이 있는 모습. chromedriver_binary를 가져오면 됩니다. 라든지, libconf2가 부족함 라든지.
로컬로 linux 환경을 만들어 chromedriver를 단독으로 실행해 보는 것으로 보일지도 모른다.
libnss3.so libX11.so 없음
chromedriver 2.37 윈 , headless-chrome v1.0.0.37 stable 이야기.
chromedriver를, docker의 centos:8 이미지를 사용해 로컬로 단독 실행했을 때에 발생. 라이브러리가 부족한 것 같다.
타사 바이너리를 AWS Lambda에서 실행 가능하게 하려면 소스 코드를 zip에 굳힐 때 함께 넣어 버리면 된다.
또는 Lambda Layers에 업로드하는 것만으로도 OK. ( 참고 )
어느 so 파일도 직접 다운로드 할 수 없었기 때문에, yum install하고 나서 꺼냈다.
yum install libnss3-dev libX11-devel
후,
pm -ql libnss3-dev
pm -ql libX11-devel
에서 설치 위치를 찾고 cp 명령으로 복사
Check failed: InitDefaultFont(). Could not find the default font
chromedriver 2.37 윈 , headless-chrome v1.0.0.37 stable 이야기.
Docker의 centos : 8에서 chromedriver를 로컬에서 혼자 실행했을 때,
chromedriver가 있는 폴더에 작성된 chrome_debug.log에 출력되고 있었다.
전혀 해결책이 보이지 않았지만, Python3.8에서 실행하고 있던 AWS Lambda를 Python3.7로 바꾸면 정상적으로 움직였다.
번외편 <input type="time">에 send_keys하고 싶을 때는 "HH:MM AM"처럼 한다
Docker로 로컬로 Lambda 환경을 만들고 동작 확인을 했을 때는,
<input type="time" id="start">
driver.find_element_by_id('start').send_keys('13:00')
에서 입력이 가능하지만 프로덕션 AWS Lambda에서 이 코드를 실행하면 값이 설정되지 않습니다.
driver.find_element_by_id('start').send_keys('13:00 PM')
라고 입력할 수 있다.
참고: 맨 아래 코멘트
Reference
이 문제에 관하여(AWS Lambda에서 Headless-Chromium을 사용할 때 발생한 오류), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/vranometria/items/ec4901f5db91b05668ac
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Layers에 업로드하면/opt하에 전개된다. 공식 문서
파이썬의 경우를 예로 들면,/opt/python 부하가 import의 참조 범위가 되므로 업로드된 zip을 확장했을 때
/opt/python/selenium과 같이 되어 있지 않으면 참조할 수 없게 발생한다.
windows에서 zip 압축하여 'chromedriver' executable may have wrong permissions
맨 아래 코멘트
윈도우가 리눅스 파일 권한을 다룰 수 없기 때문에 발생합니까?
해결책은 linux에서 zip 압축하여 Layers나 S3에 업로드한다.
참고 : docker로 aws cli를 사용할 수있는 환경 만들기
"errorMessage": "Message: Service /tmp/bin/chromedriver unexpectedly exited. Status code was: 127\n", "errorType": "WebDriverException"
뭔가 여러가지 발생하는 조건이 있는 모습. chromedriver_binary를 가져오면 됩니다. 라든지, libconf2가 부족함 라든지.
로컬로 linux 환경을 만들어 chromedriver를 단독으로 실행해 보는 것으로 보일지도 모른다.
libnss3.so libX11.so 없음
chromedriver 2.37 윈 , headless-chrome v1.0.0.37 stable 이야기.
chromedriver를, docker의 centos:8 이미지를 사용해 로컬로 단독 실행했을 때에 발생. 라이브러리가 부족한 것 같다.
타사 바이너리를 AWS Lambda에서 실행 가능하게 하려면 소스 코드를 zip에 굳힐 때 함께 넣어 버리면 된다.
또는 Lambda Layers에 업로드하는 것만으로도 OK. ( 참고 )
어느 so 파일도 직접 다운로드 할 수 없었기 때문에, yum install하고 나서 꺼냈다.
yum install libnss3-dev libX11-devel
후,
pm -ql libnss3-dev
pm -ql libX11-devel
에서 설치 위치를 찾고 cp 명령으로 복사
Check failed: InitDefaultFont(). Could not find the default font
chromedriver 2.37 윈 , headless-chrome v1.0.0.37 stable 이야기.
Docker의 centos : 8에서 chromedriver를 로컬에서 혼자 실행했을 때,
chromedriver가 있는 폴더에 작성된 chrome_debug.log에 출력되고 있었다.
전혀 해결책이 보이지 않았지만, Python3.8에서 실행하고 있던 AWS Lambda를 Python3.7로 바꾸면 정상적으로 움직였다.
번외편 <input type="time">에 send_keys하고 싶을 때는 "HH:MM AM"처럼 한다
Docker로 로컬로 Lambda 환경을 만들고 동작 확인을 했을 때는,
<input type="time" id="start">
driver.find_element_by_id('start').send_keys('13:00')
에서 입력이 가능하지만 프로덕션 AWS Lambda에서 이 코드를 실행하면 값이 설정되지 않습니다.
driver.find_element_by_id('start').send_keys('13:00 PM')
라고 입력할 수 있다.
참고: 맨 아래 코멘트
Reference
이 문제에 관하여(AWS Lambda에서 Headless-Chromium을 사용할 때 발생한 오류), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/vranometria/items/ec4901f5db91b05668ac
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
뭔가 여러가지 발생하는 조건이 있는 모습. chromedriver_binary를 가져오면 됩니다. 라든지, libconf2가 부족함 라든지.
로컬로 linux 환경을 만들어 chromedriver를 단독으로 실행해 보는 것으로 보일지도 모른다.
libnss3.so libX11.so 없음
chromedriver 2.37 윈 , headless-chrome v1.0.0.37 stable 이야기.
chromedriver를, docker의 centos:8 이미지를 사용해 로컬로 단독 실행했을 때에 발생. 라이브러리가 부족한 것 같다.
타사 바이너리를 AWS Lambda에서 실행 가능하게 하려면 소스 코드를 zip에 굳힐 때 함께 넣어 버리면 된다.
또는 Lambda Layers에 업로드하는 것만으로도 OK. ( 참고 )
어느 so 파일도 직접 다운로드 할 수 없었기 때문에, yum install하고 나서 꺼냈다.
yum install libnss3-dev libX11-devel
후,
pm -ql libnss3-dev
pm -ql libX11-devel
에서 설치 위치를 찾고 cp 명령으로 복사
Check failed: InitDefaultFont(). Could not find the default font
chromedriver 2.37 윈 , headless-chrome v1.0.0.37 stable 이야기.
Docker의 centos : 8에서 chromedriver를 로컬에서 혼자 실행했을 때,
chromedriver가 있는 폴더에 작성된 chrome_debug.log에 출력되고 있었다.
전혀 해결책이 보이지 않았지만, Python3.8에서 실행하고 있던 AWS Lambda를 Python3.7로 바꾸면 정상적으로 움직였다.
번외편 <input type="time">에 send_keys하고 싶을 때는 "HH:MM AM"처럼 한다
Docker로 로컬로 Lambda 환경을 만들고 동작 확인을 했을 때는,
<input type="time" id="start">
driver.find_element_by_id('start').send_keys('13:00')
에서 입력이 가능하지만 프로덕션 AWS Lambda에서 이 코드를 실행하면 값이 설정되지 않습니다.
driver.find_element_by_id('start').send_keys('13:00 PM')
라고 입력할 수 있다.
참고: 맨 아래 코멘트
Reference
이 문제에 관하여(AWS Lambda에서 Headless-Chromium을 사용할 때 발생한 오류), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/vranometria/items/ec4901f5db91b05668ac
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<input type="time" id="start">
driver.find_element_by_id('start').send_keys('13:00')
driver.find_element_by_id('start').send_keys('13:00 PM')
Reference
이 문제에 관하여(AWS Lambda에서 Headless-Chromium을 사용할 때 발생한 오류), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/vranometria/items/ec4901f5db91b05668ac텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)