Проблема с лямбда-функцией триггера DynamoDB: сбой при вызове функции

Я включил потоки в своей таблице DynamoDB. При изменении элементов запускается лямбда-функция. Думаю, я правильно все настроил и на стороне лямбда-триггера, и на разрешениях, и на стороне Dynamodb. Я также запустил свою лямбда-функцию с тестовыми данными, и это удалось. Однако при изменении элементов в таблице триггер не запускал мою лямбда-функцию. Вместо этого я получил следующую ошибку:

Размер пакета: 100 Последний результат обработки: ПРОБЛЕМА: сбой при вызове функции

Есть идеи, как лучше всего отладить это? Я зашел в журналы CloudWatch, но не было журналов, связанных с триггером / потоком.

Спасибо.

Обновлено: журналы лямбда-функции (а не ее триггера Dynamodb). Триггер не генерировал никаких операторов журнала.

START RequestId: 3a08eedc-f0de-11e8-9008-033b48d2cb67 Версия: $ LATEST  18:16:28 END RequestId: 3a08eedc-f0de-11e8-9008-033b48d2cb67  18:16:28 REPORT RequestId: 3a08eedc-f0de-11e8-9008-033b48d2cb67 Продолжительность: 81,85 мс Длительность выставления счета: 100 мс Размер памяти: 128 МБ Максимально используемая память: 30 МБ

Q1: где вы видели «Размер пакета: 100 Последний результат обработки: ПРОБЛЕМА: сбой при вызове функции»? Q2: что значит «нет логов, связанных с триггером / потоком». значит? где вообще есть журналы лямбды (хоть и не связанные с триггером / потоком)? Если бы были, можете ли вы их опубликовать? Q3: Вызывается ли эта лямбда другим источником событий? Q4: Сколько оперативной памяти выделено для этой лямбды?

Itay Maman 24.11.2018 21:03

В1: я увидел это сообщение, когда щелкнул триггер Dynamodb в лямбда-консоли. Q2: На самом деле я не думаю, что настраивал журналы с триггером. Как настроить журналы для триггера? Спасибо.

Sarah Guo 25.11.2018 18:57

@ItayMaman, я обновил пост, добавив записи журнала. Оперативная память 128 МБ.

Sarah Guo 26.11.2018 03:01

можешь поделиться кодом лямбды?

Itay Maman 27.11.2018 04:00

Так вы думаете, что проблема в коде? Мне сложно поделиться, так как код длинный (~ 150 строк). Если вы действительно хотите взглянуть, вы можете дать мне свой адрес электронной почты, и я могу отправить его вам. Но также, что было бы проще, если бы вы могли просто сообщить мне, каковы возможные причины этого, я смогу отладить себя. Спасибо.

Sarah Guo 27.11.2018 04:19

Или LinkedIn тоже работает, если электронная почта неудобна.

Sarah Guo 27.11.2018 04:33
linkedin.com/in/itay-maman
Itay Maman 27.11.2018 11:42

На самом деле, поскольку вы подразумевали, что это проблема кода, мне пришло в голову попытаться отладить свой код. Поскольку я упростил свой код, сработал триггер. Так что я думаю, что это действительно проблема кода. Буду еще отлаживать.

Sarah Guo 27.11.2018 19:03

Здорово! Очень рад это слышать :)

Itay Maman 27.11.2018 20:28

Я думаю, что проблема связана с циклами while, элементами пакета и сканированием. Я подумал либо о том, чтобы сделать рекурсию, как вы сказали, либо использовать async / await. Но для первого я не знаю, вызовет ли стек рекурсии другие проблемы. А для последнего это кажется действительно не интуитивным. Другая проблема - aws.documentClient в node.js использует обратные вызовы вместо обещаний. Поэтому для простоты я перехожу на Java. У Java и Python нет проблем с асинхронностью, которые есть в javascript / node.js.

Sarah Guo 28.11.2018 00:05
Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
10
7 264
3

Ответы 3

Это звучит как возможный вариант использования Rookout, если вам нужно следить за значениями переменных в вашей живой лямбде в ситуации, когда вы не можете создавать журналы. и, запускающий его локально, не даст вам реальных данных триггеров событий. .

Я столкнулся с этой проблемой сегодня.

  1. Я отладил его, вручную запустив лямбда-выражение с помощью кнопки Test в верхней части основной лямбда-страницы. Он показал вывод ошибки при попытке запустить мою лямбду.
  2. Причина, по которой у меня возникла ошибка, заключалась в параметре handler, поскольку у меня было нестандартное имя функции javascript, и я забыл настроить его в своей лямбде.

В моем случае у моей лямбда-роли не было разрешений на запись в SNS, а лямбда-код выполнял запись в SNS. Поэтому я добавил политику к лямбда-роли, дающую ей разрешение на запись в любую тему SNS.

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