Пример лямбда-функции AWS CLI

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

Допустим, вы размещаете веб-сайт, аналогичный Amazon, управление инфраструктурой для размещения и выполнения внутреннего кода требует от вас выполнения следующих действий.

  • Мониторинг производительности и доступности
  • Управление обновлениями операционной системы
  • Применение исправлений безопасности
  • Масштабируйте количество серверов в соответствии со спросом

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

При использовании AWS Lambda с вас взимается небольшая плата за каждый запрос и за время выполнения вашего кода с шагом в сто миллисекунд. Если спрос возрастет, AWS автоматически выделит серверы, чтобы обеспечить бесперебойную работу пользователей. Когда спрос упадет, он выведет серверы из эксплуатации, чтобы вам не пришлось продолжать нести вычислительные затраты.

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

В следующем примере мы будем использовать Node (Javascript). Лямбда-функции состоят из обработчиков, запускаемых при определенных событиях, таких как загрузка в корзину S3.

Прежде чем мы сможем загрузить наш код, мы должны создать zip-файл.

zip function.zip index.js

Далее мы создадим роль на основе следующего файла конфигурации.

aws iam create-role --role-name lambda-role --assume-role-policy-document file://role.json

Убедитесь, что вы скопировали имя ресурса Amazon (ARN) из выходных данных, так как мы будем использовать его для создания лямбда-функции.

При указании обработчика используйте следующий синтаксис.

‹Имя файла›.‹Обработчик›

aws lambda create-function --function-name hello-world --zip-file fileb://function.zip --runtime nodejs8.10 --role arn:aws:iam::084696551378:role/lambda-role --handler index.handler

Мы можем запустить функцию Lambda вручную, выполнив следующую команду.

aws lambda invoke --function-name hello-world outputfile.txt

Значение, возвращаемое нашей функцией, хранится в файле outputfile.txt. Мы можем просмотреть содержимое с помощью cat outputfile.txt.