Представьте, что вам нужно запустить скрипт Python для функции AWS Lambda, и вы получаете эту ошибку?
{ "errorMessage": "Unable to import module 'lambda_function': No module named 'pandas', "errorType": "Runtime.ImportModuleError" ... }
Не волнуйтесь, это распространенная ошибка, и я не буду останавливаться на достигнутом
Есть несколько способов, но я собираюсь предложить вам самый простой способ импортировать pandas в AWS Lambda. Функция Lambda — добавить слой Lambda ?
Это ? слой сыра в функции Lambda, содержащий дополнительный код, такой как библиотеки, зависимости и т. д.
Слои AWS Lambda — это строительные блоки для ваших функций. Представьте, вам нужны дополнительные инструменты (например, библиотека Pandas) для завершения проекта. Вместо того, чтобы упаковывать все эти инструменты в каждый отдельный проект (что тратит впустую пространство и время), AWS позволяет создавать уровни инструментов (библиотеки, зависимости или общий код). Эти слои находятся за пределами вашей основной функции, но всегда доступны, когда они нужны вашей функции.
Короче говоря, лямбда-слои помогут вам:
Экономьте место в коде, отделив основную логику от дополнительных библиотек.
Повторно используйте библиотеки и код в нескольких функциях Lambda.
Легко обновляйте свои зависимости или управляйте ими, не меняя код основной функции.
Думайте о слоях как о дополнительном ящике для хранения, прикрепленном к вашей функции Lambda, в котором хранится все, что нужно вашей функции для бесперебойной работы. Вы можете накладывать несколько слоев на свою функцию, не загромождая основной код.
Для успешного запуска Pandas в вашей лямбда-функции требуется всего 3 шага
Как вы можете видеть, у нас есть опция Слои под именем нашей лямбда-функции, в моем случае это "import-pandas-function", а количество слоев равно &&&]0
Этот шаг разделен на два этапа, поскольку нам нужно добавить скрипт Python, содержащий некоторый код Pandas, и написать тестовое событие в формате JSON, чтобы проверить, правильно ли работает код.
import json import pandas as pd def lambda_handler(event, context): data = event.get('data', []) df = pd.DataFrame(data) if not df.empty: mean_value = df['column_name'].mean() result = { "mean_value": mean_value, "data_shape": df.shape, "summary": df.describe().to_dict() } else: result = { "message": "Empty DataFrame" } # Return the response return { 'statusCode': 200, 'body': json.dumps(result) }
{ "data": [ {"column_name": 10, "other_column": "A"}, {"column_name": 20, "other_column": "B"}, {"column_name": 30, "other_column": "C"}, {"column_name": 40, "other_column": "D"} ] }
Нажмите кнопку проверки. Вероятно, вы получили ошибку ?:-
"errorMessage": "Невозможно импортировать модуль 'lambda_function': нет модуля с именем 'pandas',
"errorType": "Runtime.ImportModuleError"
...
Прокрутите вниз до лямбда-функции, вы, вероятно, увидите отдельный раздел «Слои» в конце страницы
После нажатия кнопки «Добавить слой» вы увидите страницу, содержащую пару разделов «Настройки времени выполнения функции» и «Выбрать слой»
Вы можете увидеть три варианта в разделе «Выбрать слой», нажав «Слои AWS».
После выбора слоев AWS вы увидите раскрывающийся список «Слои AWS».
В раскрывающемся списке «Слои AWS» выберите -> AWSSDKPandas-Python312
В раскрывающемся списке «Версия» выберите -> 13 (выберите самую большую)
нажмите кнопку «Добавить»
Когда ваша страница перейдет к обзору функции, вы увидите, что слой добавлен под именем функции «import-pandas-function»
Вы успешно получили ответ. "statusCode": 200
{ "statusCode": 200, "body": "{\"mean_value\": 25.0, \"data_shape\": [4, 2], \"summary\": {\"column_name\": {\"count\": 4.0, \"mean\": 25.0, \"std\": 12.909944487358056, \"min\": 10.0, \"25%\": 17.5, \"50%\": 25.0, \"75%\": 32.5, \"max\": 40.0}}}" }
Продолжить кодирование?
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3