Лямбда-функция AWS Python: невозможно импортировать модуль «lambda_function»: нет модуля с именем event

Я новичок в AWS и Elasticsearch/Opensearch, и у меня возникли некоторые проблемы.

У меня есть Lambda на основе Python (v3.12), которая ранее работала с Elasticsearch. Вместо этого мой клиент хочет использовать Opensearch, поэтому я загрузил библиотеку «opensearch-py 2.6.0» и заменил свою прежнюю папку библиотеки «elasticsearch» на папку «opensearchpy».

В своем коде я заменил две ссылки на ELasticsearch:

from opensearchpy import OpenSearch
from dicoDefault import dico as dicoDefault
from dicoDefault import defaultRegex
from dicoDefault import getRegex
from dicoDefault import indices
from dicoDefault import types
from ngram import NGram
from opensearchpy import OpenSearch
from ssl import create_default_context
import certifi
import json
import re
import os
import urllib.parse
import datetime

es = OpenSearch([os.environ['ESURL']])

def lambda_handler(event, context):
 inputs = event['queryStringParameters']

На панели «Тестер» на AWS я запускаю следующий запрос:

{
 "httpMethod": "GET",
 "queryStringParameters": {
   "q": "Marseille"
 }
}

Однако когда я запускаю тесты, у меня появляется следующее сообщение об ошибке:

{
 "errorMessage": "Unable to import module 'lambda_function': No module named 'events'",
 "errorType": "Runtime.ImportModuleError",
 "requestId": "e03d61d5-fa1f-424f-a917-1c60e562b3a4",
 "stackTrace": []
}

Я попытался сделать несколько отпечатков, но, похоже, функция «lambda_handler» даже не запускается. У меня не было этой проблемы с Elasticsearch. Поэтому я не думаю, что это связано с отсутствующим файлом.

Судя по тому, что я видел, проблема связана с версиями файлов. Я подумал, может быть, где-то в библиотеке opensearchpy есть какой-то неактуальный файл?

Есть ли у кого-нибудь какое-то представление об этом?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
101
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Задача решена.

В пустой папке я создал файл «requirements.txt», содержащий следующий текст:

opensearch-py==2.6.0

Затем в командной строке я запускаю следующую командную строку:

pip install -r requirements.txt -t python/

Эта команда создала новую папку «python» и все необходимые библиотеки для работы Opensearchpy в этой папке.

Я добавил файлы Python AWS в эту папку, сжал их в ZIP-архив и заменил им прежнюю Lambda.

И волшебство, оно работает!

Это означает, что при переходе с библиотеки python elasticsearch 6.3.1 на библиотеку python opensearch 2.6.0 вам необходимо:

  • обновите библиотеки: urllib3-2.2.1, certifi-2024.6.2,
  • И добавьте новые: charset_normalizer-3.3.2, Events-0.5 (таинственный из сообщения об ошибке), idna-3.7, python_dateutil-2.9.0, Requests-2.32.3 и Six-1.16.0.

Другие вопросы по теме