Python과 NodeJS의 경우에는 AWS Lambda 콘솔에서 코드를 작성하고 편집 할 수 있다. 콘솔에서 작성한 파이썬 코드를 배포하고 실행하다 보면, 아래와 같은 에러가 발생할 때가 있다.
[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named 'requests’
이런 에러가 발생한 원인은 코드를 실행할 때 필요한 모듈이 없기 때문이다,
해결방법
필요한 모듈을 로컬에서 특정 디렉토리 위치에 설치해준다.
#디렉토리 생성 및 이동
mkdir python
cd python/
#모듈 설치
$ pip install requests -t .
# 디렉토리 압축, 명령어로 해도 되고 직접 마우스로 해도 되나 압축파일 안에 python 디렉토리가 있도록 해야함
#zip <압축파일명.zip> -r <압축할 디렉토리 경로>
$ zip python_lib.zip -r python/
이후, 람다 콘솔에서 Layer를 생성해준다.
( Lambda 콘솔 → Layers → Create Layers )
레이어의 이름, 런타임을 선택하고, 위에서 생성한 모듈이 포함된 압축파일을 업로드 해준다.
생성이 완료되었다면, 람다함수에서 사용가능한 레이어가 생긴 것이다.
이제 모듈을 사용하고자 하는 람다함수로 이동해서 위에서 만든 레이어를 추가해준다.
함수에 접속해서 함수명 밑의 Layers를 클릭하면 Layers 편집창으로 이동한다.
add a Layer 메뉴 클릭하고 아래와 같이 설정 후 Add 누르면 모듈 업로드가 완료된다.
이제 람다함수를 실행해보면, 정상적으로 동작하는것을 확인 할 수 있다.
'Amazon AWS > Lambda' 카테고리의 다른 글
도커 컨테이너 이미지로 Lambda 함수 배포 (0) | 2023.10.15 |
---|---|
Lambda 이용해서 Cloudwatch Error 로그를 Slack으로 알림 보내기 (0) | 2023.09.07 |
FastAPI, Request Body를 Class 없이 그대로 사용하기 (0) | 2023.01.08 |