[AWS] lambda에서 chrome-selenium 크롤링 환경 설정하기



• Jupyter notebook을 AWS lambda로 옮기는 작업은 어려웠고, 주로 다음과 같은 문제가 발생했습니다:
- 로컬 환경에 저장된 musicXML을 lambda에서 사용하기 위해 어떻게 옮기는지에 대한 문제
- selenium 등의 파이썬 패키지를 lambda에 이식하는 방법
- lambda 환경에서 chrome을 설치하거나 인식하도록 세팅하는 방법
- 크롤링 과정이 느리고 lambda의 제한 시간 안에 완료될 수 있는지에 대한 문제
• Jupyter notebook의 작업 내용은 다음과 같습니다:
- 한 사이트를 열고 musicXML 파일을 업로드합니다.
- musicXML 파일의 사이즈를 조정한 뒤 svg 형태의 파일로 저장합니다.
- svg의 css_selector로 요소를 추출하여 txt 파일로 저장합니다.
• lambda로 작업을 옮기기 위해 다음과 같은 접근 방법을 사용했습니다:
- s3를 사용하여 musicXML 파일을 다운로드하고, lambda의 임시 스토리지인 /tmp에 저장합니다.
- selenium 등의 패키지를 lambda layer로 올려 사용합니다.
- chrome driver를 lambda layer로 설치하고, 파이썬 코드에 설정값을 추가하여 실행합니다.
• lambda의 데이터 스토리지로는 s3와 임시 스토리지인 /tmp를 사용했습니다.
• lambda에는 layer라는 시스템이 있어 selenium 등의 패키지를 올릴 수 있습니다.
• chrome을 사용하기 위해 chrome driver를 lambda layer로 설치하고 설정값을 추가하여 사용합니다.
• Lambda 함수에서 Chrome과 Selenium 환경 설정을 위해 Chrome driver를 layer로 설치하여 문제를 해결하였다.
• Lambda 함수의 기본 메모리 제한이 128MB로 설정되어 있어서 메모리 부족으로 인해 문제가 발생하였고, 메모리를 1024MB로 증가시킴으로써 정상적으로 동작하였다.

북마크
공유하기
신고하기