복붙노트

[PYTHON] AWS lambda의 팬더가 수적 오류를줍니다.

PYTHON

AWS lambda의 팬더가 수적 오류를줍니다.

AWS Lambda에서 팬더를 가져 오는 코드를 실행하려고했습니다. 그래서 여기에 내가 한 일이 있습니다. 다음과 같이 간단한 코드가 포함 된 파이썬 파일이 있습니다 (이 파일에는 람다 처리기가 있음)

import json
print('Loading function')
import pandas as pd
def lambda_handler(event, context):
    return "Welcome to Pandas usage in AWS Lambda"

그러나 AWS Lambda에서 람다 함수를 테스트 할 때 아래 오류가 발생합니다.

Unable to import module 'lambda_function': Missing required dependencies ['numpy']

나는 이미 압축 패키지에 numpy 있지만 여전히 나는이 오류가 발생합니다. 나는 Pandas & AWS Lambda에서 주어진 힌트를 따라 가려고했지만 운은 없다.

누구도 같은 문제에 부딪 혔습니까? 이 문제를 해결하기위한 힌트 나 제안을 부탁드립니다.

감사

해결법

  1. ==============================

    1.편집 : AWS 람다 파이썬 3.6 런타임 환경에서 판다 및 numpy 실행할 방법을 마침내 알게되었습니다.

    편집 : AWS 람다 파이썬 3.6 런타임 환경에서 판다 및 numpy 실행할 방법을 마침내 알게되었습니다.

    배포 패키지를 다음과 같은 repo에 업로드했습니다.

    자식 복제본 https://github.com/pbegle/aws-lambda-py3.6-pandas-numpy.git

    다음을 실행하여 zip 파일에 lambda_function.py를 추가하기 만하면됩니다.

    zip -ur lambda.zip lambda_function.py

    S3에 업로드하고 람다에게 소스를 보냅니다.

    기발한:

    팬더가 람다 함수로 작업하게하는 유일한 방법은 AWS Linux EC2 인스턴스에서 팬더 (및 numpy) 라이브러리를 컴파일하고이 블로그 게시물의 단계를 수행 한 다음 내 람다 함수에 Python 2.7 런타임을 사용하는 것입니다.

  2. ==============================

    2.Lambda에서 추가 라이브러리를 얻으려면 Amazon Linux에서 라이브러리를 컴파일해야합니다 (기본 라이브러리가 Numpy와 같은 C 또는 C ++ 기반 인 경우 중요합니다). 그리고 Lambda에서 실행하려는 Python 스크립트와 함께 ZIP 파일로 패키징하십시오 .

    Lambda에서 추가 라이브러리를 얻으려면 Amazon Linux에서 라이브러리를 컴파일해야합니다 (기본 라이브러리가 Numpy와 같은 C 또는 C ++ 기반 인 경우 중요합니다). 그리고 Lambda에서 실행하려는 Python 스크립트와 함께 ZIP 파일로 패키징하십시오 .

    아마존 리눅스 컴파일 된 버전의 라이브러리를 얻으려면. 누군가가 이미 컴파일 한 버전을 @pbegle에 의한 버전처럼 찾을 수도 있고 직접 컴파일 할 수도 있습니다. 그것을 해결하기 위해 두 가지 옵션이 있습니다 :  - EC2 인스턴스에서 라이브러리 컴파일 https://streetdatascience.com/2016/11/24/using-numpy-and-pandas-on-aws-lambda/  - 람다 환경의 도커 (docker) 버전에서 라이브러리 컴파일 https://serverlesscode.com/post/scikitlearn-with-amazon-linux-container/

    Docker의 마지막 옵션 다음에는 위의 블로그 게시물의 지침을 사용하고 다음을 추가하여 작동하게 할 수 있습니다.

    pip install --use-wheel pandas
    

    라이브러리를 컴파일하는 스크립트에서 :

    https://github.com/ryansb/sklearn-build-lambda/blob/master/build.sh#L21

  3. ==============================

    3.AWS Lambda를 사용하여 NodeJS에서 MySQL을 찾을 수 없습니다.

    AWS Lambda를 사용하여 NodeJS에서 MySQL을 찾을 수 없습니다.

    람다와 함께 라이브러리를 패키징해야합니다. 람다는 퍼블릭 클라우드에서 실행되므로 구성 할 수 없습니다.

    이제 귀하의 경우, 팬더를 사용함에 따라, 당신은 귀하의 우편 번호로 판다를 포장해야합니다. pandas에 대한 경로를 가져 와서 (예 : /Users/dummyUser/anaconda/lib/python3.6/site-packages) 라이브러리를 람다 함수 코드가있는 위치에 복사하십시오. 코드에서 로컬 복사본의 팬더를 참조하십시오. 업로드하는 동안 전체 세트 (코드 + 라이브러리)를 압축하고 원하는대로 업로드하십시오. 그것은 작동해야합니다.

  4. ==============================

    4.나는 python3.6 엔진을 사용하려고 시도하는 동안 유사한 오류로 어려움을 겪어 왔습니다. 2.7로 전환했을 때 나에게 잘 돌아갔다. 아마존 AMI를 사용하여 zip 파일을 만들었지 만 3.6이 아닌 python3.5 만 있습니다. 나는 버전 불일치가 그 이유라고 생각한다. 그러나 그것은 단지 추측이며, 아직 python3.6 설치 과정을 시도하지 않았습니다.

    나는 python3.6 엔진을 사용하려고 시도하는 동안 유사한 오류로 어려움을 겪어 왔습니다. 2.7로 전환했을 때 나에게 잘 돌아갔다. 아마존 AMI를 사용하여 zip 파일을 만들었지 만 3.6이 아닌 python3.5 만 있습니다. 나는 버전 불일치가 그 이유라고 생각한다. 그러나 그것은 단지 추측이며, 아직 python3.6 설치 과정을 시도하지 않았습니다.

  5. ==============================

    5.귀하의 람다 우편 번호에 numpy를 포함 시키려면 AWS docs에서이 페이지의 지침을 따르십시오 ...

    귀하의 람다 우편 번호에 numpy를 포함 시키려면 AWS docs에서이 페이지의 지침을 따르십시오 ...

    컴파일 된 바이너리가 포함 된 Python 패키지를 배포 패키지에 추가하고 패키지를 AWS Lambda와 호환되게하려면 어떻게해야합니까?

    예를 들어 numpy를 사용하여 지침을 바꾸어 말하면 다음과 같습니다.

    Python 2.7의 경우 module-name-version-cp27-cp27mu-manylinux1_x86_64.whl

    예 : numpy-1.15.2-cp27-cp27m-manylinux1_x86_64.whl

    파이썬 3.6의 경우, module-name-version-cp36-cp36m-manylinux1_x86_64.whl

    예 : numpy-1.15.2-cp36-cp36m-manylinux1_x86_64.whl

    unzip numpy-1.15.2-cp36-cp36m-manylinux1_x86_64.whl

    휠 파일을 압축 해제하면 배포 패키지가 Lambda와 호환됩니다.

    모두가 의미가 있기를 바랍니다.)

    최종 결과는 다음과 같을 수 있습니다. 참고 : 배포 패키지에 whl 파일을 포함하면 안됩니다.

  6. from https://stackoverflow.com/questions/43877692/pandas-in-aws-lambda-gives-numpy-error by cc-by-sa and MIT license