0

Я последовал за шагом this tutorial, но когда я нахожусь на этапе «Тестирование результата», я не вижу свое имя таблицы во время индексов, так как в этом примере показано «все продукты».Как индексировать данные потоков Dynamodb в Amazon Elasticsearch Services через AWS Lambda?

Значит, моя таблица dynamodb не указана в моем домене Amazon ES.

Я установил все разрешения и сконфигурировал лямбду так же, как в примере.

Теперь я просто не знаю, как это сделать для запуска моих потоков dynamodb в AWS ES.

ответ

0

Убедитесь, что у вас есть контент в таблице Dynamo DB. Без этого потоковая передача не произойдет, и поскольку Elasticsearch создаст индекс (таблицу), в первый раз что-то будет введено в него, это приведет к отсутствию индекса.

Если в вашем Динамо-БД есть контент, проблема, скорее всего, связана с проблемами с интеграцией между DB Dynamo и AWS Lambda или между AWS Lambda и Elasticsearch.

Вот несколько вещей, которые вы можете сделать для отладки:

  • Проверьте журналы CloudWatch/Мониторинг для вашего лямбда, чтобы увидеть, если он был вызван
  • Был вызов успешным? Если не решить эту ошибку и повторить попытку
  • Имеет ли роль выполнения лямбда соответствующие разрешения для публикации вещей в elasticsearch? (Особенно проверьте, чтобы ARN, указанный вами для ролей, указывал на правильные ресурсы в вашей учетной записи aws)
  • Имеет ли роль выполнения lambda соответствующие разрешения для чтения вещей из вашего потока Dynamo DB? (Проверьте ARN и здесь)
  • Validate, что ES_ENDPOINT вы указали указует на кластер, созданные ранее в учебнике

Надеется, что это поможет вам решить проблему!

+0

Все перечисленные выше были успешно проверены. Cloudwatch показывает завершение вызова, я устанавливаю разрешения так же, как описано в учебнике, а затем я ввел ARN моей таблицы. ES_ENDPOINT указывает на мой кластер. Моя проблема остается прежней. Я не могу поймать данные в Amazon ES Services, тогда как мой облачный показ показывает успешный вызов. –

+0

Вы пытались открыть лямбду в консоли и вручную изменить код, чтобы добавить больше протоколирования и отладки таким образом? Также, когда у меня была аналогичная проблема. Оказалось, что регион в ARN устанавливается на _us-east-1_, когда он должен был _eu-west-1_ для кластера elasticsearch. – baggero

0

Я только что воспроизвел то, что эти парни сделали в блоге, поскольку функция Lambda Blueprint, упомянутая в блоге, больше не доступна.

Вы можете использовать мой код здесь, который делает то же самое: https://github.com/sportarchive/dynamodb-to-elasticsearch

Он использует библиотеку ElasticSearch Python и отлично работает на производстве. Он поддерживает: ВСТАВИТЬ, ОБНОВИТЬ и УДАЛИТЬ, а также все типы данных в DynamoDB

+0

Привет! Я пытаюсь использовать ваш код, но я не понимаю, как это сделать. Как мне назвать функцию? Должен ли я использовать параметр загрузки zip или мне просто нужно скопировать и вставить код?Вы пишете: «В первый раз вам нужно создать функцию в AWS Lambda. Make create/DynamoToES DESC =« Обработать поток DynamoDB для ES »Где я должен вставить команду make? Это первый раз, когда я использую Lambda, и я просто не может найти способ сделать это ... Спасибо! –

+0

Клонировать проект и запускать его локально в своем терминале в корне клонированного проекта. Если вы не знаете, что делает 'make', Google это:) ИЛИ вы можете просто запрограммировать свою функцию непосредственно в консоли Но мой проект делает все для вас, поэтому прочитайте README – koxon