Я новичок в 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 есть какой-то неактуальный файл?
Есть ли у кого-нибудь какое-то представление об этом?





Задача решена.
В пустой папке я создал файл «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 вам необходимо: