Код Python в AWS Lambda для загрузки шейп-файла в PostGIS(RDS)

#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.