Несколько файлов и один обработчик для лямбда-функций в Python

#python #amazon-web-services #aws-lambda #aws-sam #aws-sam-cli

#python #amazon-веб-сервисы #aws-лямбда #aws-sam #aws-sam-cli

Вопрос:

У меня следующая структура папок

 src
  -- functions
     -- Test
        -- __init__.py
        -- app.py
        -- create_data.py
-- template.yaml
  

Внутри app.py у меня есть это:

 from .create_data import create_data
....
def handler(event, context):
   return create_data(item=event)
...
  

В моем шаблоне.yaml у меня есть:

   TestFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: src/functions/Test
      Handler: app.handler
....
  

Итак, моя идея состоит в том, чтобы иметь app.py который обрабатывает запрос и использует другой .py (в этом случае create_data.py ) для обработки запроса и сохранения в базе данных
Но, когда я пытаюсь запустить функцию (локально или на шлюзе API) Я получаю сообщение об ошибке:

{"errorType":"Runtime.ImportModuleError","errorMessage":"Unable to import module 'app': attempted relative import with no known parent package"}

Если я удалю импорт create_data , это сработает.

Как мне это исправить? Я имею в виду, я не хочу всегда помещать ВЕСЬ свой код в app.py , я хотел бы разделить на файлы

Комментарии:

1. Я надеюсь, что вы найдете эту тему полезной, github.com/aws/aws-sam-cli/issues/1963#issuecomment-624425404