Нужна ваша помощь в понимании некоторых концепций. У меня есть веб-приложение, использующее Lambda @ Edge на CloudFront. Эта лямбда-функция обращается к DynamoDB, выполняя около 10 независимых запросов. Это порождает случайные ошибки, хотя отлично работает, когда я тестирую автономную лямбда-функцию. Я не могу разобраться в журналах облачного интерфейса, а Lambda @ Edge не отображается в CloudWatch.
У меня такое ощущение, что виноваты запросы DynamoDB. (потому что это все, что я делаю в функции Lambda) Чтобы убедиться, я реплицировал данные по всем регионам. Но это не решило проблему. Я увеличил тайм-аут и объем памяти, выделенный лямбда-функции. Но это никоим образом не помогло. Но уменьшение количества запросов к БД, похоже, помогает.
Не могли бы вы помочь мне понять это? Неправильно ли делать запросы к БД в Lambda @ Edge? Есть ли способ получить подробные логи Lambda @ Edge?
как выглядит подготовка вашей таблицы Dynamodb? — person Vikas schedule 18.02.2020
Все по запросу. Без подготовки. — person Vikas schedule 18.02.2020
Журналы Lambda @ Edge отображаются в CloudWatch в регионе, в котором была вызвана Lambda. Я подозреваю, что вам просто нужно войти в CloudWatch и перейти в правильный регион, чтобы просмотреть журналы. Если вы сами вызываете CloudWatch, это будет регион, в котором вы находитесь, а не регион, в котором вы создали Lambda.
После того, как у вас будет журнал, у вас будет гораздо больше информации для продолжения.
Слишком поздно, на год больше, но никогда не знаешь, что кому-то это выгодно. Lambda @ Edge не работает в определенном регионе, поэтому, если вы подключаетесь к таблице DynamoDB, вам необходимо определить регион, в котором эта таблица может быть найдена.
В NodeJS это приведет к ниже:
Как упоминал F_SO_K, вы можете найти свои журналы CloudWatch в ближайшем к вам регионе. Как узнать, какой регион это будет (если вы единственный, кто использует этот конкретный Lambda @ Edge, вы можете заглянуть в эта документация)