AWS

[AWS] Lambda 모듈 사용법 (cannot find module error)

효진인데요 2024. 1. 29. 15:33

 

cannot find module error

 

 

 

람다에서 외부 모듈을 사용하기 위해 이런저런 방식을 찾아보던 중

 

  1. 직접 함수 자체에 node module 추가
  2. 모듈이 포함된 레이어 생성

이렇게 크게 두 가지 방법이 존재한다고 한다.

 

 

 

 

레이어를 만들어 필요한 함수에 추가해서 사용하는게 좋을 것 같다고 판단

 

이유

-> 여러 함수에서 동일한 기능을 사용하게 될 것 같음

 

-> 공통적으로 사용하는 코드 부분에 수정 시 함수마다 다 직접 넣어버리면 싹 다 바꿔야 함

-> 반면, 레이어로 관리하면 그 레이어 하나만 수정하면 됨

 

 

 


 

 

레이어 생성 과정

(한글로 번역되어 있어서 그거 기준으로 작성)

 

 

1. lambda > 계층 탭에서 계층 생성 버튼 클릭

 

호환 아키텍처와 런타임 설정은 선택사항이긴 하지만

사용하려는 함수와 호환되도록 아키텍처와 런타임을 설정해 주자.

 

 

 

이렇게 생성이 되고, 버전 관리도 가능하다 👍 

 

 

 


 

 

Lambda 함수로 이동

 

 

레이어 함수 연결 연결하려는 함수로 이동해서 계층을 찾아간다.

아마 밑으로 쭉쭉 내리다 보면 있을 것이다. 

 

 

 

지금은 추가되어 있는 상태이긴 한데

[Add a layer]을 누른다.

 

 

이렇게 함수의 런타임과 아키텍처가 나오고, 

 

 방금 생성한 레이어를 연결해 줄 것이니 사용자 지정 계층을 선택한 뒤, 방금 생성한 layer을 선택한다.

 

아까 layer에서 버전 관리도 가능하다고 했는데,

함수마다 사용할 layer을 선택한 뒤 버전까지 한 번 더 선택이 가능하기 때문에

재사용성에도 좋고 협업에도 좋을 듯하다.

 

 

 


 

 

 

오류 발생

 

 

 

 

 

분명 레이어를 생성한 다음 함수와 연결하면

모듈을 자유롭게 불러다가 사용할 수 있다고 하던데...

 

왜 계속 경로를 찾을 수 없다고 하는 건지 이해할 수 없었다..

 

경로는 분명 맞는데.. 이러면서 한동안 삽질을 했다....

 

당시 내 심정

 

수많은 스택오버플로우 글들을 뒤져보다가 너무 진행이 지체되는 것 같아

도움!!

을 외쳤는데 해결이 됐다.

 

짱이다..

 

 

사실 환희까진 아니고 허무 + 해탈

 

 

 

정리해 보자면..

 

 

 

원래는 내가 레이어에 올린 zip 파일이

 

nodejs.zip
    ㄴnode_modules
    ㄴ 모듈 파일들....
    ㄴpackage.json
    ㄴpackage-lock.json

 

이런 형식이었는데

 

nodejs.zip 
    ㄴnodejs 
        ㄴnode_modules 
        ㄴ 모듈 파일들
        .... 
        ㄴpackage.json 
        ㄴpackage-lock.json

 

 

이렇게 ZIP 파일 안에 파일을 한 단계 더 넣어지도록(?)

수정해서 다시 레이어에 올려봤다. 

 

 

 

 

 

그랬더니 됨...... (오열)

 

 

 

https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/packaging-layers.html 

 

계층 콘텐츠 패키징 - AWS Lambda

계층 콘텐츠 패키징 Lambda 계층은 추가 코드 또는 데이터를 포함하는 .zip 파일 아카이브입니다. 계층에는 일반적으로 라이브러리 종속 항목, 사용자 지정 런타임 또는 구성 파일이 포함됩니다.

docs.aws.amazon.com

 

아 여기에도 나와있네,,,,,ㅎ

스스로가 바보가 된 느낌이랄까..

 

경로 문제면서 코드에만 문제가 있을 것이라고 생각한 바보멍충..

 

 

🥲

728x90

'AWS' 카테고리의 다른 글

[AWS] SAM Deployment Guide  (0) 2024.02.02
[AWS] API Gateway란?  (0) 2024.01.24
[AWS] Lambda 함수란?  (0) 2024.01.19