-
Cloud Function deployment package in PythonNAVER Cloud 2020. 10. 12. 21:48
Cloud Function 을 통해 API 를 만드는 테스트를 진행중인데, 매일 하나씩 고비가 생기는 것 같다.
네이버클라우드플랫폼의 Cloud. Function 을 통해서 실행시킬 Python 코드를 Jupyter notebook 에서 테스트를 하고 나서 Cloud Fuction 에서 돌려보려고 하니 아래와 같이 에러가 발생했다.
["2020-10-12T12:14:26.14680968Z stderr: Traceback (most recent call last):", "2020-10-12T12:14:26.14684808Z stderr: File \"pythonrunner.py\",line 87, in run", "2020-10-12T12:14:26.146853189Z stderr: exec(self.fn, self.global_context)", "2020-10-12T12:14:26.146857021Z stderr: File \"__main__.py\", line 1, in <module>", "2020-10-12T12:14:26.146860965Z stderr: ModuleNotFoundError: No module named 'pymysql'"]
그렇다! notebook 에서도 테스트 할 때 pip install 로 pymysql 라이브러리를 설치했었다.
Cloud Function 에서는 과연 pymysql 을 어떻게 설치해야 할까..?
이런 저런 방법을 찾다가 예전에 같은 회사 총괄님이 운영중인 커뮤니티에서 아래와 같은 글을 발견했다.
https://sarc.io/index.php/aws/805-aws-lambda-zip-python
python 라이브러리 파일을 같이 다운받아서 압축하여 업로드 해야 한다는 말이다.
위 링크에 해설대로만 해서 잘 됐으면 링크만 걸려고 했는데, 네이버클라우드플랫폼은 좀 차이가 있는지 다른 부분이 있어 정리해 보면..
1. python library 를 다운 받을 서버 또는 PC 에 접속한다. 나는 cf 라는 디렉토리를 생성했다.
mkdir /cf cd /cf
2. Cloud Function 을 통해 수행할 코드를 __main__.py 와 함께 업로드 한다.
나는 코드가 짧아서 __main__.py 안에 모든 내용을 넣었다.
그리고 코드가 수행되는데 필요한 라이브러리를 __main__.py 파일이 있는 같은 경로에 다운로드 한다. (이 부분이 위에 링크와 다른 부분이었다. 링크의 가이드에서는 라이브러리 용 디렉토리를 따로 생성했는데, 이렇게 했더니 계속 동일하게 패키지를 찾지 못했다.)
# /cf 디렉토리에서 실행 pip install pymysql -t ./
3. ZIP 압축
# /cf 에서 수행 zip -r cf10.zip ./
4. 압축된 파일을 Cloud Function 에서 실행
이제 pymysql 모듈이 없다는 에러가 발생하지 않고 정상적으로 코드가 실행된다 야호!
반응형'NAVER Cloud' 카테고리의 다른 글
hadoop hdfs 데이터를 오브젝트스토리지로 마이그레이션 하기 (0) 2021.02.03 네이버클라우드에서 서버 중지/기동 스케줄링 설정-CLI (0) 2021.02.01 Root Domain 에 CNAME 설정 후 non-www -> www redirect (0) 2020.06.16 네이버클라우드플랫폼 API Gateway 에 사용자 도메인 적용 방법 (0) 2020.02.11 오브젝트 스토리지를 파일시스템으로 마운트해서 사용하기 (0) 2020.02.10