aws lambda что такое
Запускайте программный код и не беспокойтесь о серверах или кластерах
1 миллион запросов бесплатно
Запуск программного кода без необходимости выделять инфраструктуру или управлять ею. Просто напишите и передайте код в виде zip-файла или образа контейнера.
Обеспечьте автоматическое реагирование на запросы на выполнение кода в любом масштабе: от десятки запросов в день до сотен тысяч в секунду.
Сократите затраты, оплачивая только то компьютерное время (на уровне миллисекунд), которое вы используете, вместо того чтобы предоставлять инфраструктуру для пиковых нагрузок заранее.
Сократите время выполнения кода и повысьте производительность благодаря выделению памяти в размерах, соответствующих выполняемой функции. Реагируйте на высокий спрос за сотые доли миллисекунды благодаря Provisioned Concurrency.
Как это работает
Используйте Amazon Simple Storage Service (Amazon S3), чтобы активировать обработку данных AWS Lambda в режиме реального времени после их передачи или подключитесь к существующей файловой системе Amazon EFS, чтобы обеспечить широкомасштабный параллельный общий доступ для крупномасштабной обработки файлов.
Используйте сервисы AWS Lambda и Amazon Kinesis, чтобы обрабатывать потоковые данные для отслеживания активности приложений, обработки последовательностей операций, анализа посещаемости, очистки данных, фильтрации журналов, индексации, анализа социальных сетей, телеметрии и учета данных устройств Интернета вещей в режиме реального времени.
Подключите AWS Lambda к другим сервисам AWS и создавайте интернет-приложения, которые автоматически масштабируются в нужном направлении и работают в конфигурации с высокой доступностью в нескольких центрах обработки данных.
Создавайте бессерверные внутренние системы для обработки запросов API, связанных с Интернетом, мобильными устройствами, Интернетом вещей (IoT), а также сторонних запросов API с помощью AWS Lambda.
Создавайте серверные части для аутентификации и обработки запросов API с помощью сервисов AWS Lambda и Amazon API Gateway. Используйте AWS Amplify и легко интегрируйте внутренние системы с внешними интерфейсами iOS, Android, Web и React Native.
AWS Lambda – Ресурсы
Документация
Руководство для разработчиков по AWS Lambda
Техническая документация по использованию AWS Lambda
Руководство оператора AWS Lambda
Прочтите наше руководство по созданию, защите и мониторингу приложений на основе AWS Lambda.
Справка по API
Справочная документация по API AWS Lambda.
Руководство по началу работы
Начало работы с AWS Lambda и использование консоли Lambda.
Технические описания
Ниже приведены технические описания AWS Lambda и работы бессерверных архитектур при любых масштабах.
Обзор безопасности AWS Lambda
Это техническое описание содержит подробные сведения о сервисе AWS Lambda с точки зрения безопасности.
Бессерверные архитектуры с AWS Lambda
Это техническое описание содержит подробный обзор сервиса AWS Lambda и его возможностей, а также рекомендации по созданию собственных бессерверных приложений на AWS.
Архитектура AWS Lambda для пакетной и потоковой обработки
Это техническое описание содержит компоненты единого архитектурного шаблона для потоковой (в реальном времени) и пакетной обработки.
Учебные пособия
Ниже приведены пошаговые учебные пособия, в которых описано, с чего необходимо начинать при создании бессерверного приложения. Дополнительные учебные пособия по AWS Lambda см. на странице семинаров и учебных пособий.
Создание Lambda-функции hello world
Из этого руководства вы узнаете об основах запуска программного кода с помощью сервиса AWS Lambda, позволяющего не беспокоиться о выделении серверов и управлении ими.
Все действия, описанные в данном учебном пособии, доступны на уровне бесплатного пользования.
Семинар по бессерверной обработке данных
В ходе обучения будет выполнено развертывание простого интернет-приложения, которое позволяет заказать поездку на единороге в компании Wild Rydes.
Начало работы
Getting Started with Serverless DevOps
Создайте и разверните простое приложение, которое использует возможность интеграции веб-перехватчиков GitHub для уведомления пользователей через Slack о том, что репозиторий был отмечен звездочкой.
Начало работы с бессерверным режимом: написание бизнес-логики
Узнайте, как использовать функции AWS Lambda для хранения бизнес-логики для бессерверных приложений.
Начало работы с бессерверным режимом: создайте API для своей бизнес-логики
В этом сообщении блога показано, как создать входную дверь для бизнес-логики ваших бессерверных приложений с помощью Amazon API Gateway.
Начало работы с бессерверным режимом: рабочий процесс локального разработчика
Настройте бессерверный рабочий процесс разработчика, который позволит вам быстро тестировать и выполнять итерацию бизнес-логики, сохраняя при этом возможность взаимодействия с облачными службами.
Эталонные архитектуры
Эталонные архитектуры, позволяющие получить глубокое понимание принципов использования AWS Lambda при создании бессерверных архитектур и приложений. Образцы приложений и примеры кода также приведены в репозитории AWS Serverless Application Repository.
Интернет-приложение
Мобильный сервер
Потоковая обработка в режиме реального времени
Схемы обучения
Ознакомьтесь с важными бессерверными темами, такими как инструменты разработчика, мониторинг и наблюдаемость, поддержка образов контейнеров и многое другое, с помощью серии коротких, удобных видео. Каждое видео содержит ссылки на дополнительные ресурсы, которые помогут вам глубже погрузиться в тему.
Расширения AWS Lambda
Использование Amazon S3 для запуска автоматизированных рабочих процессов с помощью AWS Lambda
Вы можете объединить эти две бессерверные службы для создания надежных, масштабируемых решений распространенных проблем, используя объекты в S3 в качестве событий, запускающих пользовательский код в Lambda.
Технические семинары
В этих видео архитекторы решений и менеджеры по продуктам AWS дают подробные описания технологий, применяемых для создания бессерверных приложений. На странице рассказов клиентов вы можете узнать, как компании применяют AWS Lambda для быстрого и экономичного создания масштабируемых и надежных приложений, помогающих решать критически важные задачи.
Примеры использования клиентами
Узнайте, как другие компании ускоряют бизнес-процессы и сокращают издержки благодаря использованию бессерверных архитектур на основе AWS Lambda. Дополнительные сведения см. на странице примеров использования AWS Lambda клиентами.
Пример использования: Financial Engines
Financial Engines – независимый инвестиционный консультант в США, крупнейшая компания по объему активов, находящихся под управлением. Перенеся основную платформу на бессерверную архитектуру, работающую на базе AWS Lambda, Financial Engines выиграла за счет экономии средств, отсутствия административных задач и простоев, а также эффективного масштабирования, которое позволяет обрабатывать до 60 000 запросов в минуту.
Пример использования: Square Enix
Компания Square Enix использует AWS Lambda при обработке изображений для своей массовой многопользовательской ролевой онлайн-игры (MMORPG). Благодаря AWS Lambda компания смогла обеспечить надежную обработку пикового трафика, превышающего объем нормального в тридцать раз. Время обработки изображений при этом уменьшилось с нескольких часов практически до 10 секунд. Компания также добилась сокращения инфраструктурных и эксплуатационных расходов.
Пример использования: Localytics
Localytics – это компания, занимающаяся анализом и привлечением пользователей в сфере мобильных и интернет-приложений. Она работает с такими брендами, как ESPN, eBay, Fox, Salesforce, RueLaLa и New York Times. С помощью AWS Lambda различные подразделения Localytics могут получать доступ к параллельным потокам данных для создания независимых микросервисов. Это позволяет сократить время разработки и быстрее предлагать новые продукты. Ведь быстро выйти на рынок чрезвычайно важно для стартапов.
Возможности AWS Lambda
AWS Lambda – это сервис бессерверных вычислений, который запускает программный код в ответ на определенные события и отвечает за автоматическое выделение необходимых вычислительных ресурсов. В перечень событий входят изменения в состоянии или обновление, например, когда пользователь помещает товар в корзину на веб-сайте интернет-коммерции. AWS Lambda можно использовать для расширения возможностей других сервисов AWS с помощью специальной логики или для создания собственных серверных сервисов с применением возможностей масштабирования, производительности и безопасности AWS. AWS Lambda автоматически запускает программный код в ответ на различные события, такие как HTTP‑запросы через Amazon API Gateway, изменение объектов в корзинах Amazon Simple Storage Service (Amazon S3), обновление таблиц в Amazon DynamoDB или смена состояний в AWS Step Functions.
Lambda запускает код в высокопроизводительной вычислительной среде и полностью выполняет администрирование вычислительных ресурсов. В том числе обслуживание сервера и операционной системы, выделение ресурсов и автоматическое масштабирование, развертывание исправлений кода и системы безопасности, а также мониторинг кода и ведение журналов. От вас требуется только предоставить программный код.
Основные возможности продукта
Расширьте возможности сервисов AWS с помощью собственного программного кода
AWS Lambda позволяет добавлять свой код к ресурсам AWS, например к корзинам сервиса Amazon S3 и таблицам Amazon DynamoDB. В результате можно просто выполнять нужные операции с данными на этапе их вхождения или перемещения в рамках облака.
Начать работу с AWS Lambda совсем не сложно. Сначала требуется создать необходимые функции, загрузив свой код (или написав его непосредственно в консоли Lambda), а также задав объем памяти, период ожидания и роль AWS Identity and Access Management (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 Proxy, чтобы воспользоваться полностью управляемыми пулами подключения для работы с реляционными базами данных. С помощью 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.
Запуск кода в ответ на запросы Amazon CloudFront
С помощью возможности Lambda@Edge AWS Lambda может запускать соответствующий код в местоположениях AWS по всему миру в ответ на события Amazon CloudFront, например запросы контента от серверов источника или посетителей либо в обратном направлении. Это упрощает предоставление клиентам более качественного, индивидуально настроенного контента с меньшей задержкой. Подробнее »
Оркестрация множества функций
Создавайте рабочие процессы AWS Step Functions, чтобы координировать исполнение множества функций AWS Lambda для решения сложных и продолжительных задач. Сервис Step Functions позволяет определять рабочие процессы, которые активируют набор функций Lambda с помощью последовательных, параллельных, разветвленных списков операций, в том числе с возможностями обработки ошибок. С помощью Step Functions и Lambda можно создавать длительные структурированные процессы для приложений и серверов.
Интегрированная модель безопасности
Средства контроля доверия и целостности
Подписание кода для AWS Lambda позволяет обеспечить развертывание в ваших функциях Lambda только неизменного кода от подтвержденных разработчиков. Просто создавайте артефакты кода с цифровой подписью и настраивайте функции Lambda для проверки подписей при развертывании. Благодаря этому можно повысить скорость и гибкость вашей разработки приложений даже в больших группах разработчиков, обеспечивая при этом высокие стандарты безопасности.
Оплата по факту использования
Оплата за использование AWS Lambda начисляется за стабильную пропускную способность или время исполнения, а не за количество используемых серверов. Используя функции Lambda, вы платите только за выполненные запросы и время вычислений, необходимое для запуска кода. Счет за использование выставляется с точностью до одной миллисекунды, благодаря чему автоматическое масштабирование от нескольких запросов в день до тысяч запросов в секунду становится простым и экономичным. При использовании Provisioned Concurrency вы оплачиваете указанное вами количество параллельных операций за выбранный период времени. Когда функция, для которой настроен сервис Provisioned Concurrency, включена и выполняется, вы также платите за запросы и время выполнения. Подробная информация о ценах доступна на странице цен на AWS Lambda.
Гибкая модель распределения ресурсов
Задайте для своих функций необходимый объем памяти, и AWS Lambda выделит пропорциональное количество ресурсов ЦПУ, пропускной способности сети и дисковых операций чтения / записи (I/O).
Интеграция Lambda с привычными рабочими инструментами
Расширения AWS Lambda позволяют с легкостью выполнять интеграцию с привычными инструментами для мониторинга, наблюдения, обеспечения безопасности и управления. Lambda вызывает функцию в среде выполнения, обеспечивая безопасное и изолированную среду для выполнения кода функции. Расширения Lambda запускаются в среде выполнения Lambda, вместе с кодом функции. С помощью расширений Lambda можно записывать подробные диагностические сведения и отправлять журналы функций, метрики и маршруты в выбранное место. В среде выполнения Lambda также можно просто интегрировать агенты безопасности, оказывающие минимальное влияние на производительность функций.
Обеспечьте до 34 % лучшую производительность благодаря функциям на базе Graviton2
Функции AWS Lambda, работающие на Graviton2 с архитектурой процессора Arm от AWS, обеспечивают производительность до 34 % лучше, чем у функций на процессорах x86. Это относится к различным бессерверным рабочим нагрузкам, таким как веб- и мобильные серверы, обработка данных и мультимедиа. Функции Graviton2 дают меньшую задержку, производительность на 19 % выше, сниженную на 20 % стоимость и наибольшую энергоэффективность, доступную в AWS. Благодаря этому их можно использовать для критически важных бессерверных приложений.
AWS Lambda — теория, знакомство
Краткий экскурс в AWS Lambda
Что это?
AWS Lambda: это вычислительный сервис, который позволяет запускать код практически для любого типа приложения или серверной службы — и все это без необходимости администрирования. AWS Lambda выполняет все администрирование за вас, включая обслуживание сервера и операционной системы, выделение ресурсов и автоматическое масштабирование, мониторинг кода и ведение журнала. Все, что вам нужно сделать — это предоставить свой код на одном из языков, которые поддерживает AWS Lambda.
Зачем ее использовать?
У этого подхода есть и свои минусы, вы не можете управлять операционной системой на который выполняется код, не можете контролировать ЦП, память и ресурсы. Всем этим занимается AWS.
Все что вы можете, это выбрать язык, из поддерживаемых AWS Lambda.
Что могёт?
Ниже представлен краткий перечень основных функций AWS Lambda. Далее все рассмотрим по порядку.
1. Triggers
Triggers — это «возбудители» лямбды. В некотором роде лямбду можно сравнить с PHP, в том плане, что для нас она выполняется и умирает. Далее мы подробно рассмотрим механизм работы. Пока нужно понимать что лямбда, это одна функция, которая выполняется по запросу из триггеров.
Ниже список всех возможных триггеров:
API Gateway
AWS IoT
Alexa Skills Kit
Alexa Smart Home
Application Load Balancer
CloudFront
CloudWatch Events
CloudWatch Logs
CodeCommit
Cognito Sync Trigger
DynamoDB
Kinesis
S3
SNS
SQS
Для каждого из них вам нужно будет настроить уникальные параметры, которые доступны для этих триггеров. Также вы можете настроить несколько триггеров на одну лямбду. От типа триггера зависит, будет лямбда выполняться синхронно или асинхронно.
Notice: Обратите внимание, что лямбду можно заставить выполниться, так и с помощью AWS CLI, AWS SDK в ручном режиме, передавая все необходимые параметры. В том числе будет она выполняться синхронно или нет
Давайте разберем на примере:
1. API Gateway — позволяет дергать лямбду по http запросу и требует вернуть результат пользователю. Такая операция не может выполняться асинхронно, т.к. требует ответа. Для синхронных операций некоторые функции недоступны.
2. SQS — к примеру, если наша лямбда обрабатывает сообщения от SQS, возвращать результат никуда не нужно и она может выполняться асинхронно. При асинхронном выполнении появляется несколько новых возможностей, к примеру, мы можем настроить повторное выполнение в случае ошибки, или отправлять такие запросы дальше в «мертвую» очередь SQS.
2. Permissions to AWS Services
Это сервисы AWS к которым лямбда имеет доступ по умолчанию. Что это значит? В функции которую вы будете писать всегда можно подключить AWS SDK и без ключей или каких либо параметров авторизации вы сможете использовать доступные сервисы. Все доступные сервисы вы определяете в IAM Role которую используете для этой лямбды.
Для каждого используемого языка есть своя SDK, которая умеет общаться с основными сервисами AWS.
Notice: для каждой лямбды вы настраиваете IAM Role от лица который будет запускаться лямбда
3. VPC
Вы можете настроить виртуальную сеть для вашей лямбды, например для безопасного подключения к RDS.
4. Online Editor
Также AWS Lambda предоставляет возможность редактировать код вашей функции напрямую с интерфейса в вашем браузере.
5. Logging
Все запросы на лямбду логируются в CloudWatch, туда же записываются данные по времени выполнения и памяти, эти данные могут очень помочь для установки лимитов. Также в коде есть возможность логировать собственные данные(к примеру в Node.js через console.log).
Дополнительно вы всегда можете увидеть статистику по использованию лямбды на вкладке Monitoring
6. Environment Variables
Notice: Обратите внимание, что есть список заранее подготовленных переменных окружения
7. Code
Теперь самая интересная часть, сама по себе лямбда состоит из нескольких частей.
1. Layers — нижний слой. Он не обязателен, но если для использования лямбды вам нужно добавить какие-то библиотеки, то их нужно класть отдельно от основного кода, так вы сильно экономите на объеме основного кода и быстродействии самой функции.
Слои в AWS Lambda чем-то похожи на слои в докере, в том плане, что они перманенты относительно функции, и их нужно изменять отдельно. Также их можно переиспользовать в других лямбдах.
2. Function Environment — в коде должна обязательно находится функция, которая непосредственно будет выполняться при каждом запуске лямбды(Handler). О ней ниже. А перед ней находится ее окружение, которое мы задаем. Дело в том, что управление ресурсами происходит таким образом, что это окружение, хранится отдельно от функции какое-то время после ее завершения. И при следующем старте, возобновляется, не тратя на инициализацию время и ресурсы. Таким образом, все что возможно, нужно проинициализировать до самой функции, к примеру конфигурации, подключение библиотек и т.п.
3. Handler — непосредственно сам по себе выполняемый код, в зависимости от языка, определяется по разному. Для примера возьмем Node.Js. Для того что бы ваш код выполнился, нужно:
Ниже пример кода, постараюсь описать что происходит там:
8. Версионирование
Сервис поддерживает удобное версионирование. Вкратце мы каждой загруженной копии можем выдавать версию. И добавлять алиасы, которые указывают на какую-то версию. Как это работает? Смотрите на схемку ниже
И так, теперь давайте разберемся что нужно сделать, чтобы получить то — что мы видим на диаграмме
Состояние первое
Notice: вот тут описано как работать с алиасами на практике. Практическая часть по lambda будет в следующей статье вместе с SQS
И так, сейчас мы получили что-то непонятное, по сути 3 алиаса ссылаются на одну версию, непонятно. Но ничего, все по порядку
Второе состояние
Третье состояние
Теперь, чтобы получить третье состояние, нам достаточно просто добавить еще пару строк в наш код и будет третья версия нашей лямбды. И «Dev» будет смотреть теперь на нее.
Резюмируем
И так, что мы имеем?
Маленькую. Быструю. Относительно дешевую. Автомасштабируемую. Версионируемую. Функцию.
В этой статье мы рассмотрели только теоретическую часть, знакомство с этим сервисом. Так же как и с SQS в прошлой статье. В следующей статье мы рассмотрим как эти два сервиса взаимодействуют друг с другом и в практической форме научимся их настраивать, использовать.