我正在嘗試編寫一個AWS python Lambda函數,它利用Shapely來簡化「點多邊形」操作。我創建了一個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
有沒有人成功地每次在lambda勻稱的部署?我的備用計劃是回到舊的postgres/postgis,而不是很穩定,但我一定會嘗試在發電機/ lambda堆棧中構建它。
此問題是否解決? – dcinzona
您是否找到解決方案?我的字面意思是剛剛遇到同樣的問題 – Graeme