컴파일된 바이너리가 포함된 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와 호환되도록 하려면 ** manylinux2014를\ --platform 파라미터의 ** 값으로 사용하여 ** pip install 명령을 ** 실행합니다. ****

참고: 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

관련 정보

람다 레이어 사용

AWS 공식
AWS 공식업데이트됨 일 년 전