본문 바로가기
Developer/AWS

AWS Lambda Layers 사용 방법 - AWS Lambda import module(package) (Lambda 모듈(패키지) 추가 및 사용 방법)

by 김씩씩 2021. 5. 6.

AWS Lambda Layers 사용 방법 - AWS Lambda import module(package) (AWS Lambda 모듈(패키지) 추가 및 사용 방법)

 

AWS Lambda 를 사용할 때, 원하는 모듈(패키지) 를 추가하여 사용해야하는 경우가 있습니다.

또, 여러 함수를 공유해서 사용하는 경우도 굉장히 많습니다.

이를 위해서 AWS Lambda 에는 Layers(계층) 라는 아주 편리한 기능이 있습니다.

Layers 기능을 사용하여 모듈(패키지, 라이브러리), 사용자 정의 코드를 아주 편리하게 관리하고 사용하실 수 있습니다.

바로 AWS Lambda 의 Layers 사용 방법에 대해 알려드리도록 하겠습니다.

 

AWS Lambda Layers 사용 방법을 자세히 알려드리기 위해 설정한 예시 상황

AWS Lambda Layers 사용 방법을 자세히 알려드리기 위해 한가지 예시로,

Lambda 함수에 사용하길 원하는 모듈을 추가하는 예시를 들어 알려드리도록 하겠습니다.

Lambda 함수의 아래 작성해둔 코드를 보시면 아시겠지만,

Python 에서 PyJWT 모듈을 Import 하고 (참고로 모듈 이름은 PyJWT지만 Import 할 때는 jwt로 하는 모듈입니다.),

시작 function 인 lambda_handler가 실행되어, 모듈을 Import 할 때 오류가 발생하지 않는다면,

"Module addition completed without module import error" 라는 텍스트가 출력되는 간단한 코드 예시입니다.

위 Lambda 를 현재 상태로 실행시키면,

 

위와 같이,

[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': No module named 'jwt' Traceback (most recent call last):

에러를 출력하며 Import 하려는 모듈이 없다고 알려줍니다.

Lambda 에는 우리가 사용하고 싶은 모듈을 가지고있지 않기 때문에 당연한 에러입니다.

그러므로 우리는 Lambda 함수에 사용을 원하는 모듈을 추가하여 사용하여야 합니다.

바로 그 방법을 Layers 기능으로 편리하게 할 수 있습니다.

 

1. 사용할 모듈 준비

먼저 python 이라는 이름의 빈 폴더를 하나 만들어 줍니다.

※ 예시와 같이 Python Runtime 에서 폴더 명은 꼭 python 이어야 합니다.

각 Lambda 런타임에 대한 계층 경로 (출처 : https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html)

※ 또한 저는 현재 Python 코드에서 예시를 보여드리기에 python 이라는 폴더명을 사용합니다.

    폴더명은 환경에 따라 상이합니다. 위사진을 참고하시기 바랍니다!

 

만들어진 빈 폴더에 명령어로 사용하려는 모듈을 설치합니다.

현재 저는 Python 에서의 예시를 보여드리고 있기에, 아래 명령어를 사용합니다.

pip install {{ MODULE_NAME }} –t {{ TARGET_PATH }}

※ pip install 에서 옵션 –t 뒤에는 모듈을 설치할 경로를 입력합니다. 위 예시는 현재 경로에 모듈을 설치하기 위해 '.' 을 입력한 예시입니다.

 

설치가 완료되면 위 사진과 같이 폴더 안에 설치한 모듈이 다운로드 된 것을 확인하실 수 있습니다.

※ 설치한 폴더명을 한번더 꼭 확인해주시기 바랍니다.

 

이제 설치한 모듈이 들어있는 폴더를 압축합니다.

 

2. AWS Lambda Layer 생성

AWS Lambda 에서 Layers(계층) 으로 들어간 뒤, 계층 생성 버튼을 클릭하여 계층 생성을 시작합니다.

 

원하는 Layer 이름과 설명을 작성하고,

.zip 파일 업로드를 선택합니다.

만약 10MB 가 넘는다면 S3에 파일을 업로드하고 Amazon S3에서 파일 업로드를 선택하셔도 됩니다.

그리고 준비해둔 압축한 모듈을 업로드 합니다.

그리고 호환 런타임을 선택합니다.

호환 런타임이 선택 사항 이라고 되어 있지만 런타임을 설정하지 않고 생성할 시, 사용할 Lambda 함수에서 Layer를 추가할 때, 함수의 런타임과 호환되는 Layer만 목록에 나타내어주기 때문에 꼭 설정하셔야 합니다!

그리고 생성 버튼을 클릭하여 Layer 를 생성합니다.

 

Layer 가 잘 생성 되었습니다!

만들어진 Layer업데이트를 원할 때 버전 생성을 하여 업데이트가 가능하고,

버전별로 선택하여 사용도 가능하여 굉장히 편리합니다!

 

3. AWS Lambda 함수에 Layer 추가

이제 만들어진 Layer를 Lambda 함수에 추가하도록 하겠습니다.

Layer 추가를 원하는 Lambda 함수로 간 뒤, Add a layer 버튼을 클릭하여 Layer 추가를 시작 합니다.

 

Layer 추가에서 사용자 지정 계층을 선택합니다.

 

Select Box를 클릭하여 열어보면 방금 생성한 Layer가 보일 것입니다.

해당 Layer를 선택합니다.

※ Layer를 생성할 때도 말씀드렸지만 Layer 생성 시 호환 Runtime을 설정하지 않으셨으면 목록에 나타나지 않습니다.

 

Layer를 선택하셨으면 버전을 선택합니다.

처음 생성한 Layer는 버전이 1 뿐이지만, Layer의 새로운 버전을 만드셨을 경우 버전을 선택하여 사용하실 수 있습니다.

 

모든 설정을 마치셨으면 추가 버튼을 클릭하여 Layer를 추가를 완료합니다.

 

Layer 추가를 완료하면 위 사진과 같이 추가된 Layer 를 확인할 수 있습니다.

이제 원하는 모듈을 추가한 Lambda 함수를 다시 실행시켜 보면,

 

모듈을 Import 하는 과정에서 에러가 발생하지 않고 함수가 잘 실행이 된것을 확인하실 수 있습니다.

이렇게 만들어진 Layer 는 다른 Lambda 함수에서도 사용이 가능하므로 아주 편리하게 Lambda를 사용하실 수 있습니다!

 

이상으로 AWS Lambda Layers 사용 방법과 AWS Lambda 함수에 Module을 추가하여 사용하는 방법을 마치도록 하겠습니다.

 

 

도움이 되셨다면 공감, 댓글 부탁드립니다!

궁금하신 점이나 요청사항은 언제든지 말씀해주세요!

피드백도 언제나 환영입니다!

 

감사합니다.


댓글