AWS Lambda - Обзор
AWS Lambda- это служба, выполняющая бессерверные вычисления, то есть вычисления без сервера. Код выполняется на основе реакции на такие события в сервисах AWS, как добавление / удаление файлов в корзине S3, обновление таблиц Amazon Dynamo dB, 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 за пять простых шагов, показана ниже.
Step 1 − Загрузите лямбда-код AWS на любом из языков, поддерживаемых AWS lambda, то есть NodeJS, Java, Python, C # и Go.
Step 2 − Это несколько сервисов AWS, на которых можно активировать AWS lambda.
Step 3 −AWS Lambda с кодом загрузки и сведениями о событии, по которому сработал триггер. Например, событие из Amazon S3, Amazon API Gateway, Dynamo dB, Amazon SNS, Amazon Kinesis, CloudFront, Amazon SES, CloudTrail, мобильного приложения и т. Д.
Step 4 − Выполняет код AWS Lambda только при запуске сервисами AWS в таких сценариях, как:
- Пользователь загружает файлы в корзину S3
- URL-адрес конечной точки http get / post поражен
- данные добавляются / обновляются / удаляются в таблицах динамо дБ
- Отправить уведомление
- сбор потоков данных
- хостинг сайта
- отправка электронной почты
- мобильное приложение и т. д.
Step 5 − Помните, что AWS взимает плату только при выполнении лямбда-кода AWS, а не иначе.
Преимущества использования AWS Lambda
AWS Lambda предлагает множество преимуществ, когда вы над этим работаете. В этом разделе они подробно обсуждаются -
Легкость работы с кодом
AWS Lambda предоставляет инфраструктуру для загрузки кода. Он заботится о поддержании кода и запускает код всякий раз, когда происходит необходимое событие. Это позволяет вам выбрать память и тайм-аут, необходимый для кода.
AWS Lambda также может выполнять параллельные запросы в соответствии с триггерами событий.
Предоставление журнала
AWS Lambda предоставляет подробную информацию о количестве выполнений кода и времени, затраченном на выполнение, потребляемой памяти и т. Д. AWS CloudWatch собирает все журналы, что помогает понять поток выполнения и отладить код.
Биллинг на основе использования
Счета AWS Lambda выставляются на основе использования памяти, выполненных запросов и выполнения, которые выставляются с шагом не менее 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 Lambda. Помимо консоли AWS, у нас есть AWS-cli для создания и развертывания кода.
Другие особенности
Вы можете использовать AWS Lambda бесплатно, войдя на уровень бесплатного пользования AWS. Это дает вам услугу бесплатно в течение 1 года. Ознакомьтесь с бесплатными услугами, предлагаемыми на уровне бесплатного пользования AWS.
Недостатки использования AWS Lambda
Несмотря на множество преимуществ, AWS Lambda обладает следующими недостатками:
Это не подходит для небольших проектов.
Вам нужно внимательно проанализировать свой код и определить объем памяти и тайм-аут. Если вашей функции требуется больше времени, чем выделено, она будет завершена в соответствии с указанным в ней тайм-аутом, и код не будет выполнен полностью.
Поскольку AWS Lambda полностью полагается на AWS для инфраструктуры, вы не можете установить какое-либо дополнительное программное обеспечение, если этого требует ваш код.
События, запускающие AWS Lambda
AWS Lambda может запускать следующие события:
- Вход в объект S3
- Вставка, обновление и удаление данных в таблице Dynamo DB
- Push-уведомления от соцсети
- GET / POST-вызовы API-шлюза
- Модификация заголовков при просмотре или исходный запрос / ответ в CloudFront
- Записи журнала в потоке данных AWS Kinesis
- Журнал журнала в CloudTrail
Примеры использования AWS Lambda
AWS Lambda - это вычислительная служба, которая в основном используется для запуска фоновых процессов. Он может срабатывать при использовании с другими сервисами AWS. Список сервисов AWS, где мы можем использовать AWS Lambda, приведен ниже -
Объект S3 и AWS Lambda
Amazon S3 передает сведения о событии в AWS Lambda при загрузке любого файла в S3. Подробные сведения о загрузке файла, удалении или перемещении файла передаются в AWS Lambda. Код в AWS Lambda может предпринять необходимые действия, когда получит сведения о событии. Например, создание эскиза изображения, вставленного в S3.
DynamoDB и AWS Lambda
DynamoDB может запускать AWS Lambda при добавлении, обновлении и удалении данных в таблице. Событие AWS Lambda содержит все данные таблицы AWS DynamoDB о вставке / обновлении или удалении.
API Gateway и AWS Lambda
API Gateway может запускать AWS Lambda для методов GET / POST. Мы можем создать форму и поделиться подробностями с конечной точкой API Gateway и использовать ее с AWS Lambda для дальнейшей обработки, например, для записи данных в таблицу DynamoDB.
SNS и AWS Lambda
SNS используется для push-уведомлений, отправки SMS и т. Д. Мы можем активировать AWS lambda, когда в 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 для изменения ответа, отправляемого пользователю, добавление дополнительной информации заголовков в целях безопасности и т. Д.