Ошибка загрузки AWS-SDK в функции AWS Lambda с использованием NodeJS

Я создаю новые лямбда-функции, используя nodejs. И эта лямбда-функция хорошо работает без aws-лямбда. Но когда мне требуется пакет «aws-sdk», возникает ошибка и перестает работать. Ошибка в том, что они не могут требовать пакет «aws-sdk». Но aws-sdk уже был в папке node_module.

Я хочу, чтобы вы решили эту проблему. Большое спасибо.


person Mikhail Zharnikov    schedule 15.01.2018    source источник


Ответы (2)


Это очень интересный и странный вопрос.

Я тоже столкнулся с этой проблемой. Сначала, когда я столкнулся с этой проблемой, я очень волновался и выглядело это действительно очень странно. И мне понадобились дни и дни, чтобы решить эту проблему.

Причина действительно очень проста. Вы сталкиваетесь с этой проблемой из-за тайм-аута лямбда-функции.

Тайм-аут по умолчанию составляет 3 секунды, а 3 секунды слишком мало для загрузки пакета aws-sdk.

Для загрузки пакета aws-sdk требуется не менее 6 секунд. Поэтому я рекомендую вам установить тайм-аут более 6 секунд всякий раз, когда вы хотите использовать функцию aws-sdk.

person Derek Wang    schedule 15.01.2018
comment
Спасибо за Ваш ответ. Здесь вы упомянули о тайм-ауте и где я могу изменить тайм-аут? - person Mikhail Zharnikov; 15.01.2018
comment
Когда вы посещаете консоль amazon в google chrome, посетите страницу lambda. И щелкните лямбда-функцию, с которой вы столкнулись с ошибкой. На этой странице функции вы можете найти значение тайм-аута в разделе конфигурации. Измените это время, и это сработает. - person Derek Wang; 15.01.2018
comment
Прохладно! - чесал голову с последнего часа. - person Ravi Maniyar; 27.11.2019

Если эта функция запускается тысячи раз в день в течение 5 секунд или около того, она может стать довольно дорогостоящей. Если ваша лямбда в настоящее время ожидает завершения другой задачи, прежде чем завершить выполнение, было бы лучше рассмотреть систему обмена сообщениями, например. соц.

У меня есть лямбда-функция, которая требует aws-sdk, а затем обновляет DynamoDB и по завершении этого запроса вызывает другую лямбда-функцию, и я никогда не видел, чтобы все они выполнялись дольше 1 секунды. Если вы вызываете другую лямбда-функцию, обязательно включите InvocationType: 'Event', чтобы исходная лямбда-выражение завершилось сразу, а не ждало завершения второй лямбда-функции.

Если это все еще не работает, пришло время попробовать SNS, как описано здесь

person Adi H    schedule 15.01.2018