#python #aws-lambda #postgis #ogr #osgeo
Вопрос:
Я новичок в внедрении ГИС. Я пытаюсь разработать код AWS Lambda на Python для динамической загрузки файла формы.
Я разработал код после проведения некоторых исследований, и он отлично работает на моем локальном.
Но тот же код вызывает беспокойство, когда я пытаюсь запустить в AWS Lambda.
Я добавил библиотеки(лямбда-слои) для «OSGEO/GDAL» в AWS Lambda и протестировал его, вызвав импорт, и он работает нормально.
Ниже приведен код :
import os import subprocess import boto3 import urllib.parse from osgeo import gdal from osgeo import ogr s3 = boto3.client('s3') def lambda_handler(event, context): bucket = event['Records'][0]['s3']['bucket']['name'] s3key = urllib.parse.unquote_plus(event['Records'][0]['s3']['object']['key'], encoding='utf-8') # input shapefile input_shp = ('s3://' bucket '/' s3key) # database options db_schema = "SCHEMA=public" overwrite_option = "OVERWRITE=YES" geom_type = "MULTILINESTRING" output_format = "PostgreSQL" # database connection string db_connection = """PG:host=lt;RDS host namegt; port=5432 user=lt;RDS User Namegt; dbname= postgres password=lt;RDS Passwordgt;""" # call ogr2ogr from python subprocess.call(["ogr2ogr", "-lco", db_schema, "-lco", overwrite_option, "-nlt", geom_type, "-f", output_format, db_connection, input_shp])
Сообщение об ошибке :
[ERROR] FileNotFoundError: [Errno 2] No such file or directory: 'ogr2ogr': 'ogr2ogr'
Тот же код отлично работает на моем локальном компьютере с той лишь разницей, что вместо S3 я предоставляю жестко закодированный путь, по которому файл формы хранится на моем локальном компьютере.
Любые предложения!
Комментарии:
1. Как вы удалили лямбду? В моем понимании, здесь отсутствует зависимость
2. @tsamaya — Зависимости, которые я реализовал с помощью слоев AWS.