Я новичок в использовании Lambda в AWS и в настоящее время пытаюсь выполнить некоторые из примеров сценариев, приведенных в разных блогах, чтобы проверить, как все это работает в среде без сервера.Один из примеров, над которым я пытаюсь работать, - это создание лямбда-функции, которая запускается всякий раз, когда объект добавляется в корзину s3, и сохраняет метаданные объекта вasticsearch.
Для этой цели я создал доменasticsearch, s3 bucket и начал писать лямбда-функцию.
Я использую встроенный редактор кода, указанный в лямбда-консоли, и выбрал python3.6 как мое время выполнения.Ниже приведен код:
from __future__ import print_function
from pprint import pprint
import boto3
import json
from elasticsearch import Elasticsearch, RequestsHttpConnection
def lambda_handler(event, context):
imageid = event['Records'][0]['s3']['object']['key']
print(imageid)
Этот код еще не подтолкнул данные к упругому поиску, который я напишу позже.Тем не менее, я получаю сообщение об ошибке «модуль не найден» для импортаasticsearch.
Ниже приведен журнал ошибок при тестировании приведенного выше кода.
Response:
{
"errorMessage": "Unable to import module 'lambda_function'"
}
Request ID:
"a26249c3-00e2-11e9-83b0-ffc7719455cf"
Function Logs:
START RequestId: a26249c3-00e2-11e9-83b0-ffc7719455cf Version: $LATEST
Unable to import module 'lambda_function': No module named elasticsearch
END RequestId: a26249c3-00e2-11e9-83b0-ffc7719455cf
REPORT RequestId: a26249c3-00e2-11e9-83b0-ffc7719455cf Duration: 0.42 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 25 MB
У меня сложилось впечатление, что сервер меньше средыпо умолчанию загружают все необходимые библиотеки по мере их вызова.Однако, когда я искал дополнительную информацию об этой ошибке, я обнаружил, что некоторые из них указали, что источник должен быть указан в zip-файле, в то время как другие указывают, что zip-файл - When you use the ZipFile property to specify your function's source code and that function interacts
.
Меня это смущает.Нужно ли устанавливать модульasticsearch в безсерверной среде или загружать его в виде zip-файла?Как мне получить лямбда-функцию, поговорим об упругом поиске.