Selenium과 헤드리스 크롬을 AWS lambda에 넣어 보았습니다. (Win10 환경하의 주의점 등)
반면에 정기적이고 경제적으로 무언가를 실행하려면 on-demand AWS lambda와 CloudEvent를 사용하는 것이 좋습니다.
그럼 시작
절차
환경 구축
Windows 환경에서 Amazon Linux를 운영 체제로 사용하는 AWS lambda를 사용하려면 Windows 10 Ubuntu 또는 기타 remote linux server의 도움이 필요합니다. 이번에는 더 경제적인 방법으로 Ubuntu on Windows 10을 선택했습니다.
구체적인 설치 방법은 아래를 참조하면 됩니다.
Windows 10에서 Linux 사용
그런 다음 파이썬을 넣어 둡니다.
sudo apt-get update
sudo apt-get install python3.6
다음
환경이 정돈되면 Ubuntu에서 다음 작업을 수행합니다.
※Windows에서 압축해도 후에 Lambda에서 에러 발생하므로 요주의.
# Cディスクに移動する
cd /mnt/c/
mkdir /path/to/folder
cd /path/to/folder
그러면 File Explorer에서 즉시 생성하여 파일을 찾을 수 있습니다. (나중에 S3에 넣을 때가 방편이됩니다)
headless chrome 과 chromedriver 얻기
htps : // 기주 b. 코 m / 아에 우 아 아에 / 세 r ゔ ぇ r ぇ s ch 로메 / ぇ あ せ s / 타 g / v1.0.0-37
stable-headless-chromium-64.0.3282.167-amazonlinux-2017-03.zip
htps // ch 로메 d리ゔぇr. s 가시. ㅇㅜㅜㅜㅜ 이 m/그리고 x. HTML? Path = 2.37 /
chromedriver_linux64.zip
chmod 777
)하고 궁극적으로 다음과 같이 chrome 폴더에 저장하고 하나의 ZIP 파일로 압축합니다. chrome.zip
chrome
├── chromedriver
└── headless-chromium
mkdir python-selenium
cd python-selenium
python3 -m pip install --system --target ./ selenium
zip -r python-selenium.zip ../python-selenium
chrome.zip
& python-selenium.zip
를 S3에 넣고 Object URL을 메모하고 레이어를 만듭니다. from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def lambda_handler(event, context):
options = Options()
# 自分の対応するファイルパスを入れる
options.binary_location = '/opt/chrome/headless-chromium'
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--single-process')
options.add_argument('--disable-dev-shm-usage')
# 自分の対応するファイルパスを入れる
browser = webdriver.Chrome('/opt/chrome/chromedriver', chrome_options=options)
browser.get('https://www.google.com')
title = browser.title
browser.close()
browser.quit()
return {"title": title}
여기서 주의하는 것은, Basic setting of lambda function(기본 설정)을 Example을 움직이려면 메모리 소모가 256MB 이상, Duration이 약 10초 했습니다(512MB, timeout:20s 설정의 경우), 사전 로 조정하여 상황을 보는 것이 좋습니다.
Q&A
혹시 의문이 있는 분 있을지도 모르기 때문에, 몇몇 자신이 할 때 당황하고 있던 것을 씁니다.
Q : 왜 chrome 폴더에 넣고 압축합니까?
A : 특별히 필요하지 않지만 Lambda에 레이어를 추가 할 때 zip 파일에있는 것을
/opt
폴더에 붙입니다. 예를 들어, /opt/chrome/chromedriver
& /opt/chrome/headless-chromium
Q: 그림과 같이, Windows 가지고 있는 zip화의 사용은 안 됩니까?
A:실제로 그것을 Layer에 업로드하면
Message: 'chromedriver' executable may have wrong permissions
라는 에러 메세지가 나오므로, 조사한 바, 아무래도 권한이 잘 붙지 않는 것 같다. 따라서 우분투에서 파일의 권한을 조정하고 압축합시다.참고
결론
뭔가 오류가 발생해도 당황하지 않고 lambda test 실행 후 오류 보고서를 확인하는 것이 좋습니다. 의외로 문제점이 명확하게 쓰여 있다.
Reference
이 문제에 관하여(Selenium과 헤드리스 크롬을 AWS lambda에 넣어 보았습니다. (Win10 환경하의 주의점 등)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Benzenoil/items/4e92a807ab9a63f600f7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)