간단한 "point in polygon"작업을 위해 Shapely를 사용하는 AWS python Lambda 함수를 작성하려고합니다. 나는 AWS linux EC2 인스턴스를 설치하고 Shapely를 설치하고 스크립트를 작성했다. 그런 다음 EC2 인스턴스에서 linux 특정 libgeos_c.so.1 바이너리를 다운로드하고 서버리스 프레임 워크를 통해 내 lambda 기능과 동일한 디렉토리에 번들로 제공했습니다. 그러나 일단 배포하면 스크립트가 실행되지 않습니다. "라이브러리를 찾을 수 없거나 해당 변형을로드 할 수 없습니다 ..."오류가 발생합니다. 심지어 GEOS_LIBRARY_PATH 환경 변수를 통해 libgeos_c.so.1 경로를 명시 적으로 지정하려고 시도했지만 효과가 없습니다. 이것은 불가능한 배치입니까?AWS Lambda 환경에서 Python Shapely 라이브러리의 LIBGEOS_C를 올바르게 가리킬 수 있습니까?
다음은 환경 변수를 설정 한 다음 실제적으로 매끄럽게 가져오고 사용하는 보조 스크립트를 호출하는 코드 스 니펫입니다.
import sys
import os
import subprocess
here = os.path.dirname(os.path.realpath(__file__))
# Import installed packages (in site-packages)
site_pkgs = os.path.join(here, "venv", "lib", "python2.7", "site-packages")
sys.path.append(site_pkgs)
import json
def hello(event, context):
command = "GEOS_LIBRARY_PATH={} python test_geo_worker.py".format(here + "/libgeos_c.so.1")
foo = subprocess.check_output(command, shell=True)
print foo
성공적으로 람다에 매끄럽게 배치 된 사람이 있습니까? 내 후퇴 계획은 매끈한 대신 좋은 오래된 포스트그레스/포스트 지스로 돌아가는 것이지만 다이나모/람다 스택에서 이것을 구축하려고합니다.
이 문제가 해결 되었습니까? – dcinzona
해결 방법을 찾으셨습니까? 나는 문자 그대로 똑같은 문제를 겪었다. – Graeme