AWS Lambda — это сервис, который выполняет бессерверные вычисления, которые включают вычисления без какого-либо сервера. Код выполняется на основе ответов на события в сервисах AWS, таких как добавление / удаление файлов в корзине S3, обновление таблиц динамо Amazon Dynamo, HTTP-запрос от шлюза Amazon API и т. Д.
Чтобы начать работать с AWS Lambda , нам просто нужно отправить код в сервис AWS Lambda. AWS позаботится обо всех других задачах и ресурсах, таких как инфраструктура, операционная система, обслуживание сервера, мониторинг кода, журналы и безопасность.
AWS Lambda поддерживает такие языки, как Java, NodeJS, Python, C # и Go. Обратите внимание, что AWS Lambda будет работать только с сервисами AWS.
Что такое AWS Lambda?
Определение AWS Lambda, приведенное в его официальной документации, следующее:
AWS Lambda — это вычислительный сервис, который позволяет запускать код без подготовки или управления серверами. AWS Lambda выполняет ваш код только при необходимости и автоматически масштабируется от нескольких запросов в день до тысяч в секунду. Вы платите только за то время, которое потратили на вычисления — плата не взимается, если ваш код не запущен.
Как работает AWS Lambda?
Блок-схема, объясняющая работу AWS Lambda в пяти простых шагах, показана ниже —
Шаг 1. Загрузка лямбда-кода AWS на любом из языков, поддерживаемых лямбда-AWS, а именно NodeJS, Java, Python, C # и Go.
Шаг 2. Это несколько сервисов AWS, на которых можно запускать лямбду AWS.
Шаг 3 — AWS Lambda, в котором есть код загрузки и подробности события, при котором произошел триггер. Например, событие от Amazon S3, Amazon API Gateway, Dynamo dB, Amazon SNS, Amazon Kinesis, CloudFront, Amazon SES, CloudTrail, мобильного приложения и т. Д.
Шаг 4. Выполнение лямбда-кода AWS только при запуске службами AWS в таких сценариях, как —
- Пользователь загружает файлы в корзину S3
- http get / post конечная точка URL
- данные добавляются / обновляются / удаляются в динамо-таблицах дБ
- Отправить уведомление
- сбор потоков данных
- хостинг сайта
- отправка электронной почты
- мобильное приложение и т. д.
Шаг 5. Помните, что AWS взимает плату только при выполнении лямбда-кода AWS, а не иначе.
Преимущества использования AWS Lambda
AWS Lambda предлагает несколько преимуществ, когда вы работаете над этим. Этот раздел обсуждает их подробно —
Простота работы с кодом
AWS Lambda предоставляет вам инфраструктуру для загрузки вашего кода. Он заботится о поддержании кода и запускает код всякий раз, когда происходит требуемое событие. Это позволяет вам выбрать память и время ожидания, необходимое для кода.
AWS Lambda также может выполнять параллельные запросы в соответствии с триггерами событий.
Предоставление журнала
AWS Lambda предоставляет подробные сведения о количестве выполнений кода и времени, потраченном на выполнение, потребленной памяти и т. Д. AWS CloudWatch собирает все журналы, что помогает понять ход выполнения и отладку кода.
Биллинг на основе использования
Лямбда-биллинг в AWS выполняется на основе использования памяти, выполненных запросов и выполнения, которые тарифицируются с шагом не менее 100 мс. Таким образом, для выполнения 500 мс, выставление счетов будет после каждых 100 мс. Если вы укажете лямбда-код AWS, который должен быть выполнен за 500 мс, а время, затрачиваемое на его выполнение, составляет всего 200 мс, AWS будет выставлять вам счет только за время, то есть 200 мс выполнения вместо 500 мс. AWS всегда взимает плату за использованное время выполнения. Вам не нужно платить, если функция не выполняется.
Многоязычная поддержка
AWS Lambda поддерживает популярные языки, такие как Node. JS, Python, Java, C # и Go. Это широко используемые языки, и любой разработчик может легко написать код для AWS Lambda.
Простота написания и развертывания кода
Для Lambda доступно множество опций для разработки и развертывания кода. Для написания своего кода вы можете использовать онлайн-редактор AWS, Visual Studio IDE или Eclipse IDE. Он также поддерживает безсерверную инфраструктуру, которая облегчает написание и развертывание лямбда-кода AWS. Помимо консоли AWS у нас есть AWS-cli для создания и развертывания кода.
Другие преимущества
Вы можете бесплатно использовать AWS Lambda, зарегистрировавшись на бесплатном уровне AWS. Это дает вам сервис бесплатно в течение 1 года. Взгляните на бесплатные услуги, предлагаемые на бесплатном уровне AWS.
Недостатки использования AWS Lambda
Несмотря на многие преимущества, AWS Lambda обладает следующими недостатками:
-
Это не подходит для небольших проектов.
-
Вы должны тщательно проанализировать свой код и определить память и время ожидания. Если ваша функция требует больше времени, чем выделено, она будет прервана в соответствии с указанным в ней тайм-аутом, и код не будет полностью выполнен.
-
Поскольку AWS Lambda полностью полагается на AWS для инфраструктуры, вы не можете установить дополнительное программное обеспечение, если этого требует ваш код.
Это не подходит для небольших проектов.
Вы должны тщательно проанализировать свой код и определить память и время ожидания. Если ваша функция требует больше времени, чем выделено, она будет прервана в соответствии с указанным в ней тайм-аутом, и код не будет полностью выполнен.
Поскольку AWS Lambda полностью полагается на AWS для инфраструктуры, вы не можете установить дополнительное программное обеспечение, если этого требует ваш код.
События, которые запускают AWS Lambda
События AWS Lambda могут запускаться следующим образом:
- Вступление в объект S3
- Вставка, обновление и удаление данных в таблице БД Динамо
- Push-уведомления от SNS
- GET / POST вызовы к API Gateway
- Изменение заголовков в средстве просмотра или исходном запросе / ответе в CloudFront
- Записи журнала в потоке данных AWS Kinesis
- Журнал истории в CloudTrail
Примеры использования AWS Lambda
AWS Lambda — это вычислительный сервис, используемый в основном для фоновых процессов. Может запускаться при использовании с другими сервисами AWS. Список сервисов AWS, где мы можем использовать AWS Lambda, приведен ниже —
S3 Object и AWS Lambda
Amazon S3 передает информацию о событии в AWS Lambda при любой загрузке файла в S3. Подробная информация о загрузке или удалении файла или перемещении файла передается в AWS Lambda. Код в AWS Lambda может предпринять необходимые шаги для получения сведений о событии. Например, создание эскиза изображения, вставленного в S3.
DynamoDB и AWS Lambda
DynamoDB может запускать AWS Lambda при добавлении, обновлении и удалении данных в таблице. Событие AWS Lambda содержит все подробности таблицы AWS DynamoDB о вставке / обновлении или удалении.
API-шлюз и AWS Lambda
API Gateway может запускать AWS Lambda с помощью методов GET / POST. Мы можем создать форму и поделиться информацией с конечной точкой API Gateway и использовать ее с AWS Lambda для дальнейшей обработки, например, для внесения данных в таблицу DynamoDB.
SNS и AWS Lambda
SNS используется для push-уведомлений, отправки SMS и т. Д. Мы можем запустить AWS-лямбду, когда в SNS происходит любое push-уведомление. Мы также можем отправлять SMS на номер телефона от AWS Lambda, когда он получает триггер.
Запланированные события и AWS Lambda
Запланированные события могут быть использованы для заданий cron. Он может запустить AWS Lambda для выполнения задачи в обычном режиме.
CloudTrail и AWS Lambda
CloudTrail может быть полезен при мониторинге логов в учетной записи. Мы можем использовать AWS Lambda для дальнейшей обработки журналов CloudTrail.
Kinesis и AWS Lambda
Kinesis используется для сбора / хранения данных отслеживания в реальном времени, поступающих с кликов веб-сайтов, журналов, каналов социальных сетей и триггера AWS Lambda, который может выполнять дополнительную обработку этих журналов.
CloudFront и Lambda @ Edge
CloudFront — это сеть доставки контента, где вы можете разместить свой веб-сайт, а Lambda @ Edge может использоваться для обработки заголовков, поступающих от запроса зрителя, запроса источника, ответа источника и ответа зрителя. Модификация заголовков включает в себя такие задачи, как изменение данных cookie, перезапись URL, использование для тестирования AB для изменения ответа, отправляемого пользователю обратно, добавление дополнительной информации заголовков в целях безопасности и т. Д.