Возможности AWS Lambda

В чем преимущества AWS Lambda?

AWS Lambda – это сервис бессерверных вычислений, который запускает программный код в ответ на определенные события и отвечает за автоматическое выделение необходимых вычислительных ресурсов. В перечень событий входят изменения в состоянии или обновление, например, когда пользователь помещает товар в корзину на веб-сайте интернет-коммерции. AWS Lambda можно использовать для расширения возможностей других сервисов AWS с помощью специальной логики или для создания собственных серверных сервисов с применением возможностей масштабирования, производительности и безопасности AWS. Сервис AWS Lambda автоматически запускает программный код в ответ на различные события, такие как HTTP‑запросы через API шлюз Amazon, изменение объектов в корзинах Простого сервиса хранения данных Amazon (Amazon S3), обновление таблиц в Amazon DynamoDB или смена состояний в AWS Step Functions.

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

Основные возможности продукта

AWS Lambda позволяет добавлять свой код к ресурсам AWS, например к корзинам сервиса Amazon S3 и таблицам Amazon DynamoDB. В результате можно просто выполнять нужные операции с данными на этапе их вхождения или перемещения в рамках облака.

Начать работу с AWS Lambda совсем не сложно. Сначала требуется создать необходимые функции, загрузив свой код (или написав его непосредственно в консоли Lambda), а также задав объем памяти, период ожидания и роль Управления идентификацией и доступом AWS (IAM). Затем необходимо указать ресурс AWS, который будет триггером для функции: конкретную корзину сервиса Amazon S3, таблицу Amazon DynamoDB или поток Amazon Kinesis. Зафиксировав изменение ресурса, Lambda выполнит настроенную функцию, запустит вычислительные ресурсы, необходимые для обработки поступающих запросов, и будет управлять ими.

AWS Lambda можно использовать для создания новых сервисов приложений, которые будут активироваться по требованию с помощью интерфейса прикладного программирования (API) Lambda или специальных адресов API, созданных с использованием Amazon API Gateway. Специальные события обрабатываются с помощью Lambda, а не на устройстве клиента, позволяя не зависеть от пользовательских операционных систем, снижая энергопотребление на стороне клиента и упрощая установку обновлений.

Для работы с AWS Lambda не нужно осваивать новые языки, инструменты или инфраструктуру. Сервис работает с любыми сторонними библиотеками, даже встроенными. Кроме того, можно упаковать любой код (платформу, SDK, библиотеку и т. д.) как уровень Lambda, чтобы использовать его с разными функциями и управлять им. Lambda имеет встроенную поддержку Java, Go, PowerShell, Node.js, C#, Python и Ruby, а также предоставляет API среды выполнения для создания функций с использованием любых других языков программирования.

Благодаря тщательному управлению инфраструктурой AWS Lambda код исполняется в высокопроизводительной, отказоустойчивой среде, что позволяет сосредоточить свои усилия на разработке разнообразных серверных сервисов. Lambda избавляет от забот по обновлению серверной операционной системы (ОС), а также проблем, связанных с расширением существующих или вводом в эксплуатацию новых серверов по мере роста нагрузки. AWS Lambda обеспечивает эффективное развертывание кода, выполняет задачи администрирования, технического обслуживания, исправления уязвимостей системы и обеспечивает возможность мониторинга и ведения журналов средствами Amazon CloudWatch.

AWS Lambda поддерживает необходимые объемы вычислительных ресурсов в нескольких зонах доступности (AZ) в каждом из регионов AWS, защищая код от неисправностей отдельных единиц оборудования или сбоев в работе центров обработки данных (ЦОД). AWS Lambda и функции, работающие в рамках этого сервиса, обеспечивают предсказуемую и надежную операционную производительность. Сервис AWS Lambda разработан для обеспечения высокой доступности как самого сервиса, так и исполняемых им функций. Сервис работает без плановых простоев и перерывов на обслуживание.

AWS Lambda поддерживает упаковывание и развертывание функций в виде образов контейнеров, что упрощает для клиентов создание приложений на основе Lambda с помощью известных инструментов, рабочих процессов и зависимостей для образов контейнеров. К другим преимуществам работы с Lambda для клиентов относятся простота эксплуатации, автоматическое масштабирование со временем запуска менее секунды, высокая доступность, модель оплаты по мере использования и встроенная интеграция с более чем 200 сервисами AWS и приложениями «ПО как услуга» (SaaS). Корпоративные клиенты могут использовать согласованный набор инструментов как со своими приложениями Lambda, так и с контейнерными приложениями, упрощая необходимое централизованное управление, такое как сканирование безопасности и подпись образов.

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

Используйте Прокси-сервер Amazon RDS, чтобы воспользоваться полностью управляемыми пулами подключения для работы с реляционными базами данных. С помощью RDS Proxy можно эффективно управлять тысячами одновременных подключений к реляционным базам данных. Это позволяет легко разрабатывать высокомасштабируемые, безопасные и бессерверные приложения на основе Lambda, которые подключаются к реляционным базам данных. На данный момент RDS Proxy поддерживает базы данных MySQL и Aurora. RDS Proxy для бессерверных приложений можно настроить на консоли Amazon RDS или на консоли AWS Lambda.

Provisioned Concurrency позволяет лучше контролировать производительность бессерверных приложений. Когда эта возможность включена, функции находятся в инициализированном состоянии и готовы к быстрому реагированию в пределах ста миллисекунд. Provisioned Concurrency идеально подходит для работы с приложениями AWS Lambda, которым требуется больший контроль за временем запуска функций. С легкостью настраивайте требуемые для приложения параллельные операции. Увеличивайте или уменьшайте масштаб и даже отключайте операции при необходимости. Воспользуйтесь Provisioned Concurrency, чтобы обеспечить стабильную производительность приложений, которые должны работать с минимальными задержками, без необходимости менять код или управлять вычислительными ресурсами.

Использование Amazon Elastic File System (EFS) для AWS Lambda позволяет безопасно считывать, записывать и сохранять большие объемы данных с низкой задержкой при работе в любом масштабе. Писать код и загружать данные во временное хранилище для их последующей обработки не требуется. Это экономит время и упрощает код приложений, позволяя сосредоточиться на бизнес‑логике. EFS для Lambda идеально подходит для целого ряда примеров использования, включая обработку или резервное копирование больших объемов данных, а также загрузку больших справочных файлов или моделей. Система также позволяет совершать обмен файлами между бессерверными инстансами или контейнерными приложениями и даже запускать вывод машинного обучения (ML) с помощью EFS для AWS Lambda.

С помощью возможности Lambda@Edge AWS Lambda может запускать соответствующий код в местоположениях AWS по всему миру в ответ на события Amazon CloudFront, например запросы контента от серверов источника или посетителей либо в обратном направлении. Это упрощает предоставление конечным клиентам более качественного, индивидуально настроенного контента с меньшей задержкой. 

Создавайте рабочие процессы AWS Step Functions, чтобы координировать исполнение множества функций AWS Lambda для решения сложных и продолжительных задач. Сервис Step Functions позволяет определять рабочие процессы, которые активируют набор функций Lambda с помощью последовательных, параллельных, разветвленных списков операций, в том числе с возможностями обработки ошибок. С помощью Step Functions и Lambda можно создавать структурированные длительные процессы для приложений и серверов.

Встроенный пакет средств разработки ПО (SDK) AWS Lambda интегрируется с AWS Identity and Access Management (IAM), чтобы обеспечить безопасный доступ других сервисов AWS к коду. AWS Lambda по умолчанию запускает ваш код в Amazon Virtual Private Cloud (VPC). При необходимости можно настроить доступ к ресурсам AWS Lambda за пределами собственного VPC, чтобы использовать пользовательские группы безопасности и сетевые списки контроля доступа. Благодаря этому функция Lambda получает безопасный доступ к ресурсам VPC. AWS Lambda соответствует требованиям SOCHIPAAPCI, и ISO. Актуальную информацию о сертификации Lambda и соответствии требованиям см. на странице Сервисы в программе соответствия требованиям.

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

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

Задайте для своих функций необходимый объем памяти, и AWS Lambda выделит пропорциональное количество ресурсов ЦПУ, пропускной способности сети и дисковых операций чтения / записи (I/O).

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

Функции AWS Lambda, работающие на Graviton2 с архитектурой процессора Arm от AWS, обеспечивают производительность до 34 % лучше, чем у функций на процессорах x86. Это относится к различным бессерверным рабочим нагрузкам, таким как веб- и мобильные серверы, обработка данных и мультимедиа. Функции Graviton2, которые на данный момент доступны в AWS, обеспечивают меньшую задержку, наибольшую энергоэффективность, производительность свыше 19 % и сниженную на 20 % стоимость. Благодаря этому их можно использовать для критически важных бессерверных приложений.

AWS Lambda обеспечивает встроенные возможности мониторинга путем автоматической записи и отправки данных журналов, метрик и отслеживаний в сервисы мониторинга и наблюдения AWS, такие как Amazon CloudWatch и AWS X-Ray. В Lambda также доступны расширенные возможности мониторинга, такие как Live Tail, для просмотра и анализа журналов в режиме реального времени, расширенные средства организации журналов, позволяющие с помощью встроенных инструментов записывать журналы в структурированном формате JSON, управлять фильтрацией на уровне журналов без внесения изменений в код, а также настраивать группу журналов CloudWatch, в которую Lambda отправляет журналы. Благодаря функции Отслеживание состояния приложений Lambda включает готовый инструмент мониторинга производительности приложений (APM) для отслеживания пропускной способности, уровня доступности, задержек, сбоев и ошибок в бессерверных приложениях. Аналитика Lambda автоматически собирает подробные метрики, в том числе по использованию памяти, ЦП и сетевых ресурсов, тем самым обеспечивая более глубокое понимание эффективности функции Lambda. Кроме того, Lambda поддерживает интеграцию со сторонними инструментами мониторинга с помощью расширений Lambda, что упрощает использование удобных для вас инструментов мониторинга и устранения неполадок бессерверных приложений.