AWS Lambda에 파이썬 코드를 올려서 실행하는 것에는 시행착오가 꽤 있을 것 같다.
내 PC의 경우 코드 실행에 필요한 라이브러리 등이 설치되어 있으므로 코드가 실행되지만,
아마존 서버에서 실행하려면 이러한 라이브러리 파일 등을 업로드해야 한다. 두 가지 방법이 있는데, 첫째는 zip 파일 형태로 코드와 함께 업로드하는 것이고 두 번째는 Layer라는 것을 이용해서 업로드하고 코드에서 사용하는 것이다. 아래 블로그를 참고하여 배울 수 있을 것 같다.
https://blog.naver.com/chandong83/221852027113
셀레니움을 AWS Lambda에서 구동하는 것을 API(Application Programming Interface(애플리케이션 프로그램 인터페이스))로 만들어, 테스트 코드를 자신 뿐 아니라 다른 사람도 실행해 볼 수 있도록 하는 것도 가능하다고 한다. 하지만 지금 배울 단계는 아니라고 생각한다.
https://dev.to/awscommunity-asean/creating-an-api-that-runs-selenium-via-aws-lambda-3ck3
1. 필요로 하는 패키지를 설치한다. 패키지 설치 폴더명은 python이어야 한다. selenium과 python-telegram-bot을 설치한다.
- 커맨드라인으로 설치 대상인 폴더로 이동, 아래 명령어로 셀레니움과 텔레그램봇을 설치한다. 해당 폴더에 설치하려면 끝에 -t . 을 붙인다.
pip3 install selenium -t .
pip3 install python-telegram-bot -t .
- 로컬에서 작성한 코드는 chromedriver_manager를 사용했었는데, AWS Lambda에서는 chrome --version 명령어를 lambda가 못 읽는다고 오류를 뱉어 사용이 불가능하다고 하니 다른 방법을 찾아야 했다.
- chrome driver라는 리눅스 실행파일을 layer로 깔아 두고 파이썬 코드에 설정값을 넣어주면 실행이 가능하다고 한다.
(https://newdeal123.tistory.com/76)
- linux용 chromedriver를 설치하여 python폴더의 bin 폴더 안에 넣는다.
2. python 폴더를 통채로 압축한다.
3. AWS Lambda로 이동하여 레이어를 추가한다(계층 생성).
이름: 아무이름이나
설명: 안써도됨
python zip 파일 업로드 해 준다
호환 런타임: python 3.9 선택
4. 함수 생성 및 레이어 추가
(1) 함수생성 : 새로 작성 선택 - 함수 이름 기재, 런타임은 Python3.9 기재 - 함수생성
(2) 레이어 추가: 함수 개요 부분에 Layers 클릭
(3) 사용자 지정 계층에서 myLayer1 선택, 버전 1 선택
4. 테스트
함수에 import selenium을 입력하고 Deploy를 클릭한다.
테스트 탭으로 이동하여 테스트 버튼을 클릭한다.
실행 결과 라이브러리를 정상적으로 사용할 수 있다.
'코딩 > Python' 카테고리의 다른 글
[Python] for문에서 전역변수 설정하기 (0) | 2022.09.30 |
---|---|
[Python] Selenium 오류 메시지 해결, no such element: unable to locate element (HTML 내 F (0) | 2022.09.21 |
[Python] 해당 폴더에 파이썬 모듈 설치하는 방법 (0) | 2022.09.15 |
[Python] while 조건문에 True 입력하면 무한루프 (0) | 2022.09.15 |
[Python] telegram 모듈 설치 관련 (0) | 2022.09.15 |
댓글