안녕하세요 dev-길길IT입니다.
AWS Serverless 서비스 중 인프라 걱정없이 코드를 실행할 수 있는 Lambda는 특히 API나 IaC(Infrastructure as Code)등의 여러 기능에서 많이 활용되는 서비스 중 하나인데요. 대표적으로 Java, Python 뿐만 아니라 Go, Ruby, Node 등 다양한 언어와 Framework를 지원해서 더더욱 활용도가 높은 듯 하고, 저도 요즘 회사에서 AWS Lambda와 Python을 이용해서 API를 많이 만들고 있는데요.
Python으로 Lambda를 사용하려면 반드시 알아야 하는 것이 바로 module 사용을 위한 Layer 계층을 생성하고 다루는 법입니다. 오늘은 AWS Lambda에서 unable to import module 에러가 떴을 때 어떻게 Layer 계층을 만들어야 하는지 방법을 알아보도록 하겠습니다.
AWS Lamba layer 계층 만드는 법 (unable to import module)
※ 목차
1. AWS Lambda layer 계층 만드는 법
2. AWS Lambda layer 계층 사용하는 법
1. Lambda layer 계층 만드는 법
Python에서는 코딩을 하면서 여러가지 Module을 사용하는데요. 이 module을 다운로드 한 후에 코드에 import해서 사용을 하게 됩니다. 이 때 site-packages 폴더에 다운로드가 되는데요. pycharm IDE를 사용하신다면 프로젝트 디렉토리에서 External Libraies - site-packages에 마우스 우클릭을 하고 show in explorer를 선택하면 오른쪽과 같이 폴더가 뜹니다.
그렇지 않다면 AppData-Local-Programs-Python-Python버전-Lib-Sitepackages에 찾아들어가면 됩니다.
그 후 원하는 module을 선택해주는데요. module은 메인 코드가 포함된 폴더와 정보가 들어있는 dist-info 폴더 2가지로 이루어져있는데 이 2가지를 함께 압축을 해줘야 합니다.
boto3로 예를 들어보면 boto3 + boto3-1.24.76.dist-info 2가지 폴더를 함께 묶어줘야 하는것이죠.
또한 Lambda에서는 python이라는 폴더 아래에 module을 넣어주어야 동작이 원활하게 됩니다. 따라서 python 폴더 아래에 boto3와 dist-info 폴더 2개를 넣고 이를 test.zip으로 압축해주었습니다.
이제 AWS Lambda로 돌아와서 추가 리소스 - 계층을 눌러서 들어가줍니다.
그리고 우측 상단에 계층 생성 버튼을 선택해주면 새로운 AWS Lambda Layer 계층을 만들 수 있게 됩니다. 이름과 설명을 작성하고 .zip 파일 업로드를 선택한 후 아래에 있는 업로드 버튼을 누르면 폴더 탐색기가 뜨는데요. 여기서 아까 만들어준 test.zip을 선택해줍니다.
업로드 된 것을 확인한 후 호환 아키텍쳐를 지정해주는데 저는 x86_64를 선택해주었습니다. 그리고 호환 런타임은 Python 버전을 선택해주게 되는데요. 현재 파이썬은 3.11버전까지 출시가 되었지만 아직까지 수 많은 module들이 3.7, 3.8에서만 동작을 하기 때문에 저는 이 2가지를 호환 런타임으로 지정해주었습니다.
이후 생성을 누르면 계층 AWS Lambda Layer 계층 생성이 완료됩니다.
2. Lambda layer 계층 사용하는 법
그 후 AWS Lambda에서 계층을 추가해줄텐데요. Lambda function으로 들어가보면 아래쪽에 계층이라는 영역이 있는데요. 여기서 [Add a Layer]를 선택해줍니다.
그러면 계층 추가 메뉴가 표시됩니다. 여기서 계층 소스에 사용자 지정 계층을 지정하면 아까 업로드한 test가 나옵니다. 선택하고 생성해줍니다.
계층이 생성되면 위와 같이 AWS Lambda에 정상적으로 계층이 업로드 된 표시로 아래와 같이 test라는 항목이 보입니다. 이제 이 상태에서 코드에다가 import 를 하고 module이름을 작성해주면 코드를 실행할 때 정상적으로 실행이 될 것입니다.
도움이 되시기를 바라며 오늘도 읽어주셔서 감사합니다.
'IT' 카테고리의 다른 글
아이폰 15 Pro스펙 출시일 가격 색상 알아보기 (0) | 2023.09.13 |
---|---|
갤럭시 One UI 5.1 업데이트, 새로 추가된 기능 알아보기 (0) | 2023.03.04 |
ChatGPT란 무엇인가? 가입하고 사용하는 방법 (0) | 2023.02.20 |
갤럭시 S23 이미지 센서, 초고화소 아이소셀 HP2 특징 (0) | 2023.01.19 |
클라우드 서비스의 종류 IaaS, PaaS, SaaS 차이점 비교 (0) | 2023.01.17 |
댓글