2015-12-23 2 views
43

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

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

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

+3

Это все объяснено в документации здесь - http://docs.aws.amazon.com/lambda/latest/dg/ nodejs создать-развертывания-PKG.html – arcseldon

ответ

64

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

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

Вот как:

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

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

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

  4. Хорошо, ваш пакет Лямбда работает. Заправьте его командой zip -r lambdaFunc.zip ., а в Ваш каталог Lambda package. Обязательно не зацикливать сам каталог , но каталога.

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

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

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

  6. Теперь вы можете нажать тест в консоли Lambda.

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

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

Возможно, вам нужно будет явно указать регион, на который вы нацеливаетесь: 'aws lambda update-function-code -function-name lambdaFunc --region eu-west-1 --zip-file fileb: // ~/path/to/your/lambdaFunc.zip' – GreensterRox

+1

Хотя кажется, что гораздо больше работы, чтобы пройти через это, это действительно намного лучший способ создания этих лямбда-выражений ... большое спасибо! –

+0

да, это в меньшей степени работает в долгосрочной перспективе, хорошо и легко повторяется – JohnAllen