Как указать файл python в обработчике AWS, если файл кода внутри zip-файла на s3? - PullRequest
0 голосов
/ 01 декабря 2018

Я создал пакет развертывания zip-файла, размером 38 МБ, который мне посоветовали поместить в s3 и вызвать в aws lambda.

Для обработчика в aws лямбда он говорит, что я должен назвать свое имя и lambda_handler.

Я получаю ошибку Unable to import module 'lambda': No module named 'lambda'

lambda - это мой zip-файл, а aws_lambda_function - это мой python-файл в zip-файле.

Я получаю вышеуказанную ошибку, когда я также ввожу aws_lambda_function в обработчик.

Как мне указать имя файла в обработчике в моем zip-файле?

from boto3.session import Session
import json
from pandas.io.json import json_normalize
import s3fs
import uuid


def lambda_handler(event, context):
             rest of code

1 Ответ

0 голосов
/ 01 декабря 2018

Прежде всего, вы должны убедиться, что файл пакета, который вы загрузили на S3, имеет следующую структуру:

some_function.zip
│ somel_library_here
└ foo.py

Т.е. файл, в котором находится ваш обработчик , как вверхний уровень вместе с необходимыми библиотеками.

Теперь, handler - это то, как AWS вызывает функцию ввода вашего лямбда-кода, НО вы можете вызывать его как угодно, если вы предоставляете его вполе с именем Handler.

enter image description here

Таким образом, в примере файл называется foo.py, а функция ввода называется lambda_handler и находится внутриэто, но, как я уже сказал, все это определяется пользователем.

...