2016-08-10 4 views
14

는 파이썬 사용하여 알렉사 응용 프로그램을 만드는 자습서를 다음했다 :Alexa 용 AWS 람다 함수에 파이썬 라이브러리를 어떻게 추가합니까?

Python Alexa Tutorial

내가 성공적으로 지금 일하러 응용 프로그램을 모든 단계를 따라 얻을 수있었습니다 원하는 파이썬 코드와 사용을 수정 외부 라이브러리, 예 : import requests 또는 pip를 사용하여 설치하는 다른 라이브러리. 내 컴퓨터에 로컬로 설치하는 pip 패키지를 포함하도록 람다 함수를 어떻게 설정합니까?

답변

6

Amazon 공식 문서 링크 here에 설명되어 있습니다. 원하는 패키지를 설치 한 후 모든 폴더 내용을 압축하는 것만 큼 간단합니다. 폴더 어디에 파이썬 람다 코드가 있습니다.

Vineeth가 그의 코멘트에서 지적한 것처럼, 인라인 코드 편집기에서 zip 파일 업로드 방법으로 이동하는 첫 번째 단계는 구성 설정에서 람다 함수 핸들러 이름을 변경하는 것입니다. 람다 핸들러.

lambda_handler => {your-python-script-file-name} .lambda_handler. python-lambda 같은

CONFIGURE LAMBDA FUNCTION

다른 솔루션과 lambda-uploader 업로드하는 과정을 단순화 도움 가장 중요한 LOCAL TESTING. 이것들은 개발에 많은 시간을 절약 할 것입니다.

+0

이 방법은 psycopg2가있는 python 3.6 스크립트에서 작동하지 않습니다. 오류 발생 " 'ProcessRawRetailSalesUsingCOPY'모듈을 가져올 수 없습니다 : 'psycopg2._psycopg'라는 모듈이 없습니다."pycharm과 함께 windows7 prof를 사용하고 있습니다. 가능한 경우이 문제에 대한 도움이 필요합니다. –

8

official documentation은 꽤 좋습니다. 요컨대, 람다 함수의 코드와 최상위 레벨에서 사용하는 모든 외부 라이브러리를 모두 포함하는 디렉토리의 zip 파일을 만들어야합니다.

virtualenv를 비활성화하고 필요한 모든 라이브러리를 작업 디렉토리 (명령 줄에서 스크립트를 호출하는 경우 항상 sys.path)에 복사하고 스크립트가 여전히 작동하는지 확인하여 시뮬레이션 할 수 있습니다.

+0

나는 문서 다음 시도했다. 나는 라이브러리에 요청을 설치했다. 나는 color_game.py를 가져 와서 상단, 요청 디렉토리, requests-2.11.0.dist-info 디렉토리에서'import requests'를 추가하고 그 세 개를 zip 파일로 보냈습니다. 나는 람다에 zip 파일을 업로드했지만 알렉사 기능을 실행하려고 할 때; 작동하지 않습니다. 원격 엔드 포인트를 호출 할 수 없거나 반환 된 응답이 유효하지 않습니다. " –

+3

알아 냈습니다! 나는 내 처리기의 이름을 바꾸지 않는다는 것을 깨달았다. 인라인 코드에서 zip 파일로 이동하는 경우 filename.lambda_handler 여야합니다. 감사! –

+0

우리는 방금 [bstpy] (https://github.com/bespoken/bstpy) 프로젝트를 시작하여 파이썬 람다를 http 서비스로 노출했습니다. 테스트에 유용 할 수 있습니다. 컬이나 우편 배달부로 json 페이로드를 던질 수 있습니다. 다른 [Bespoken Tools] (https://github.com/bespoken/bst)를 사용해 보시면 매우 멋진 개발 환경을 구축 할 수 있습니다. –

6

zappa과 같은 프레임 워크를 사용하여 패키지 기능을 처리하고 람다 함수를 배포 할 수 있습니다.

flask-ask과 함께 사용하면 알렉사 기술을 쉽게 할 수 있습니다. here

0

@ d3ming의 답변을 에코로 보내는 것은 프레임 워크가이 시점에서 갈 수있는 좋은 방법입니다. 배포 패키지를 수동으로 만드는 것은 불가능하지 않지만 패키지의 컴파일 된 코드를 업로드해야하며 Linux가 아닌 시스템에서 해당 코드를 컴파일하는 경우 시스템 간의 차이로 인해 문제가 발생할 가능성이 있습니다 람다 함수의 배포 된 환경이 높습니다.

그런 다음 리눅스 머신이나 Docker 컨테이너에서 코드를 컴파일하여 해결할 수 있습니다. 그러나 그 모든 복잡성 사이에서 프레임 워크를 채택하는 것보다 훨씬 많은 것을 얻을 수 있습니다.

Serverless은 잘 채택되어 있으며 맞춤 Python 패키지를 지원합니다. Docker와 통합되어 파이썬 종속성을 컴파일하고 배포 패키지를 빌드합니다.

이에 전체 튜토리얼을 찾고 있다면

, I wrote one for Python Lambda functions here.

관련 문제