컴파일된 바이너리가 포함된 Python 패키지를 배포 패키지에 추가하고 해당 패키지가 Lambda와 호환되도록 하려면 어떻게 해야 하나요?

2분 분량
0

pip를 사용하여 컴파일된 코드가 포함된 Python 패키지를 설치했는데, 현재 AWS Lambda 함수에서 “Unable to import module” 오류를 반환합니다.

간략한 설명

NumPy 및 pandas와 같은 컴파일된 코드를 포함하는 Python 패키지는 기본적으로 Lambda 런타임과 항상 호환되지는 않습니다. pip를 사용하여 이러한 패키지를 설치하면 패키지는 로컬 시스템의 아키텍처에 맞는 module-name 패키지를 다운로드하여 컴파일합니다. Linux 운영 체제(OS)를 사용하지 않는 경우 배포 패키지가 Lambda Python 런타임과 호환되지 않게 됩니다.

배포 패키지 또는 계층이 Linux OS가 아닌 운영 체제에서 Lambda와 호환되도록 하려면 pip 설치 명령--platform 파라미터 값으로 manylinux2014를 사용하여 실행하세요.

참고: macOS --platform 태그는 작동하지 않습니다. 예를 들어 win_amd64macosx_10_6_intel 태그는 Lambda와 호환되는 배포 패키지를 설치하지 않습니다.

해결 방법

**참고:**다음 예제 프로시저는 x86_64 아키텍처에서 실행되는 Lambda Python 3.9 런타임용 pandas를 설치하는 방법을 보여줍니다.

  1. 명령 프롬프트를 엽니다. 그런 다음, 다음 pip 명령을 실행하여 버전 19.3.0 이상의 pip 버전을 사용하고 있는지 확인합니다.

    pip --version

    pip 버전 19.3.0 이전의 pip 버전을 사용하는 경우 최신 버전의 pip로 업그레이드하세요.

    python3.9 -m pip install --upgrade pip
  2. 사전 컴파일된 Python 패키지의 .whl 파일을 Lambda 함수의 프로젝트 디렉터리에 종속 항목으로 설치합니다.

    중요:****my-lambda-function을 함수의 프로젝트 디렉터리 이름으로 바꿉니다.

    pip install \    
        --platform manylinux2014_x86_64 \
        --target=my-lambda-function \
        --implementation cp \
        --python-version 3.9 \
        --only-binary=:all: --upgrade \
        pandas
  3. Lambda 함수의 프로젝트 디렉터리를 엽니다. macOS를 사용하는 경우 다음 명령을 실행합니다.

    cd my-lambda-function
  4. 텍스트 편집기에서 lambda_function.py라는 새 파일을 생성합니다. 그런 다음, 다음 예제 코드를 복사하여 파일에 붙여넣습니다.

    import numpy as np
    import pandas as pd
    def lambda_handler(event, context):
        df2 = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),columns=["a", "b", "c"])
        number = np.pi
        print(df2)
        print(number)

    이 파일을 Lambda 함수의 프로젝트 디렉터리에 저장합니다.

  5. 설치된 모든 라이브러리와 소스 코드를 포함하는 Lambda 배포 패키지 .zip 파일 아카이브를 생성합니다.

    zip -r ../my-deployment-package.zip .

    my-deployment-package.zip 파일 아카이브를 사용하여 새 Python 3.9 Lambda 함수를 생성하거나 기존 함수를 업데이트합니다. 지침은 Python Lambda 함수의 .zip 파일 아카이브 사용을 참조하세요.

    **참고:**비슷한 절차를 사용하여 여러 함수에서 사용할 수 있는 Lambda 레이어를 생성할 수 있습니다. 예를 들어 다음 명령은 arm64 아키텍처에서 실행되는 Lambda Python 3.9 런타임용 pandas를 설치하기 위한 새 Lambda 레이어를 생성합니다.

    pip install \
        --platform manylinux2014_aarch64 \
        --target=./python/lib/python3.9/site-packages \
        --implementation cp \
        --python-version 3.9 \
        --only-binary=:all: --upgrade \
        pandas

관련 정보

Lambda 레이어 생성 및 공유

AWS 공식
AWS 공식업데이트됨 10달 전