Как загрузить модули в AWS Lambda?


Я создал несколько лямбда-функций с помощью веб-редактора. Пока все хорошо. Теперь я хотел бы начать расширять их с помощью модулей (таких как Q для обещаний). Я не могу понять, как вывести модули в лямбду, чтобы они могли использоваться моими функциями.

Я прочитал этой но это, кажется, включает в себя настройку EC2 и запуск лямбда-функций оттуда. Существует механизм для загрузки zip при создании функции, но это, похоже, связано отправка функций, разработанных локально. Поскольку я работаю в веб-редакторе, который кажется странным рабочего процесса.

Как я могу просто развернуть некоторые модули для использования в моем лямбда-функции?

1 61

1 ответ:

Я уверен, что вы не можете загрузить модули NPM без загрузки .

но вы можете на самом деле получить этот процесс до двух быстрых командных строк.

вот так:

  1. поместите файл(ы) лямбда-функции в отдельный каталог. Это потому, что вы устанавливаете npm пакеты локально для лямбда, и вы хотите иметь возможность изолировать и проверить, что вы будете загружать в лямбда.

  2. установите NPM пакеты локально с npm install packageName пока вы находитесь в отдельном лямбда-каталоге, созданном на шаге #1.

  3. убедитесь, что ваша функция работает при локальном запуске:node lambdaFunc.js (вы можете просто прокомментировать два export.handler строки в коде, чтобы адаптировать код для запуска с узлом локально).

  4. ок, ваш пакет лямбда работает. Застегивается с помощью такой команды как zip -r lambdaFunc.zip .пока на каталог вашего лямбда-пакета. Делать конечно, чтобы не заархивировать сам каталог но содержание каталога.

  5. если у вас aws-cli установлен, который я предлагаю иметь, если вы хотите, чтобы сделать вашу жизнь проще, теперь вы можете ввести эту команду:

    aws lambda update-function-code --function-name lambdaFunc \
    --zip-file file://~/path/to/your/lambdaFunc.zip
    

    (нет кавычек вокруг части lambdaFunc выше, если вам интересно, как я сделал)

  6. теперь вы можете нажать тест в лямбде приставка.

  7. Я предлагаю добавить короткий псевдоним для обеих вышеуказанных команд. Вот что у меня есть в моем для гораздо более длинной команды обновления лямбда:

    alias up="aws lambda update-function-code --function-name lambdaFunc \
    --zip-file fileb://~/path/to/your/lambdaFunc.zip"