Kangho_Story

[AWS] Lambda 람다 errorMessage": "Unable to import module 'lambda_function': Error importing numpy: you should not try to import numpy from\n 에러 해결 본문

AWS

[AWS] Lambda 람다 errorMessage": "Unable to import module 'lambda_function': Error importing numpy: you should not try to import numpy from\n 에러 해결

캉호 2024. 6. 25. 10:03
728x90
반응형

에러

Response

{

  "errorMessage": "Unable to import module 'lambda_function': Error importing numpy: you should not try to import numpy from\n        its source directory; please exit the numpy source tree, and relaunch\n        your python interpreter from there.",

  "errorType": "Runtime.ImportModuleError",

  "requestId": "eec9d88d-c572-4e13-8ee1-311088c771cc",

  "stackTrace": []

}

 

Function Logs

START RequestId: eec9d88d-c572-4e13-8ee1-311088c771cc Version: $LATEST

LAMBDA_WARNING: Unhandled exception. The most likely cause is an issue in the function code. However, in rare cases, a Lambda runtime update can cause unexpected function behavior. For functions using managed runtimes, runtime updates can be triggered by a function change, or can be applied automatically. To determine if the runtime has been updated, check the runtime version in the INIT_START log entry. If this error correlates with a change in the runtime version, you may be able to mitigate this error by temporarily rolling back to the previous runtime version. For more information, see https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html

[ERROR] Runtime.ImportModuleError: Unable to import module 'lambda_function': Error importing numpy: you should not try to import numpy from

        its source directory; please exit the numpy source tree, and relaunch

        your python interpreter from there.

Traceback (most recent call last):END RequestId: eec9d88d-c572-4e13-8ee1-311088c771cc

REPORT RequestId: eec9d88d-c572-4e13-8ee1-311088c771cc Duration: 1.32 ms Billed Duration: 2 ms Memory Size: 128 MB Max Memory Used: 36 MB

 

Request ID

eec9d88d-c572-4e13-8ee1-311088c771cc

 

 

 

에러 원인 분석

AWS Lambda에서 python으로 Pandas를 사용하려고 했다.

Lambda에서는 라이브러리를 사용하기 위해서 라이브러리 파일과 내가 작성한 소스코드를 압축해서 함께 넣거나 layer로 따로 넣어야 한다.

나는 라이브러리 파일만 따로 layer로 넣는 방법을 시도했다.

Pandas 내부에 있는 numpy가 원활하게 import가 안 된 것 같다.

하지만 확인 결과 pandas 안에는 numpy가 잘 들어가 있었다.

구체적인 원인은 파악하지 못했다.

다만 AWS 람다에서 이러한 오류가 상당히 자주 발생한다는 것은 알게 되었다.

해결 시도

여러 가지 해결법이 존재겠지만 그중 가장 간편하고 빠른 방법을 선택했다.

바로 ARN을 사용하는 것이다.

내가 사용한 AWS Lambda의 python 런타임 버전은 python3.12이다.

 

https://github.com/keithrozario/Klayers

 

GitHub - keithrozario/Klayers: Python Packages as AWS Lambda Layers

Python Packages as AWS Lambda Layers. Contribute to keithrozario/Klayers development by creating an account on GitHub.

github.com

이 주소로 들어가면 버전에 따라 사용 가능한 ARN이 있다.

 

 

나는 python3.12를 선택했으니 들어가 준다.

 

 

들어가면 이번에는 리전이 나온다. 내가 사용하는 리전을 선택해서 html을 누르자.

그러면 pandas가 있는 것을 확인할 수 있다.

이 arn을 복사하자.

그리고 AWS Lambda에 들어가서 Layers를 눌러주자.

 

그 후 계층에서 Add Layer를 눌러주자

 

 

이후 ARN 지정을 누르고 아래에 아까 복사한 ARN을 입력하고 확인을 누른 후 추가하면 끝이다.

시도 결과

 

내 Lambda에 Layer가 1개로 증가한 것을 볼 수 있고 눌러보면 pandas가 정상적으로 추가되었음을 알 수 있다

728x90
반응형
Comments