AWS Lambda

Бессерверные вычисления по событиям.

AWS Lambda — это бессерверный, управляемый событиями вычислительный сервис, предоставляемый Amazon Web Services (AWS). Он позволяет разработчикам запускать код без выделения или управления серверами. Разработчики загружают свой код в виде функций Lambda, а AWS автоматически управляет инфраструктурой, необходимой для запуска и масштабирования этого кода с высокой доступностью. Функции запускаются различными событиями, такими как изменения данных в бакете Amazon S3, обновления в таблице Amazon DynamoDB или запросы [API Gateway](/ru/terms/api-gateway). Когда происходит триггер, Lambda выполняет функцию, выделяя необходимые вычислительные ресурсы. Биллинг основан на количестве запросов и продолжительности/памяти, потребленных во время выполнения, с щедрым бесплатным уровнем. Ключевые особенности включают автоматическое масштабирование, среды выполнения без сохранения состояния (хотя состояние может управляться внешне), поддержку нескольких языков программирования (Node.js, Python, Java, C#, Go, Ruby, PowerShell и пользовательские среды выполнения) и интеграцию с огромным количеством сервисов AWS. Функции Lambda обычно кратковременны и предназначены для конкретных задач, а не для долго работающих приложений. Компромиссы включают потенциальные "холодные старты" (задержка, когда функция недавно не вызывалась), ограничения по времени выполнения, ограничения по памяти и временному хранилищу, а также зависимость от экосистемы AWS.

        graph LR
  Center["AWS Lambda"]:::main
  Rel_api_gateway["api-gateway"]:::related -.-> Center
  click Rel_api_gateway "/terms/api-gateway"
  Rel_microservices["microservices"]:::related -.-> Center
  click Rel_microservices "/terms/microservices"
  Rel_serverless["serverless"]:::related -.-> Center
  click Rel_serverless "/terms/serverless"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧠 Проверка знаний

1 / 4

🧒 Простыми словами

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

🤓 Expert Deep Dive

AWS Lambda работает на основе модели выполнения в контейнерах. Когда функция вызывается, Lambda выделяет микроконтейнер, загружает код функции и выполняет его. Для редко вызываемых функций этот шаг выделения вводит задержку "холодного старта". Последующие вызовы в течение короткого промежутка времени повторно используют существующий контейнер ("теплый старт"), значительно сокращая задержку. Функции Lambda по своей сути не сохраняют состояние; любое необходимое состояние должно быть сохранено внешне (например, в DynamoDB, S3, RDS). Модель параллелизма позволяет одновременно выполнять несколько экземпляров функции, управляемых AWS для удовлетворения спроса в пределах лимитов параллелизма на уровне учетной записи. "Подключенный параллелизм" (Provisioned Concurrency) может использоваться для смягчения "холодных стартов" для приложений, чувствительных к задержкам, путем поддержания заданного количества сред выполнения в "теплом" состоянии. Безопасность управляется через роли IAM, предоставляющие функциям гранулярные разрешения на доступ к другим ресурсам AWS. Механизм сопоставления источников событий позволяет Lambda опрашивать источники событий (например, потоки Kinesis) и вызывать функции с пакетами записей. Архитектурные соображения включают оптимизацию выделения памяти функции (что также влияет на выделение ЦП), управление зависимостями и проектирование для идемпотентности из-за возможных повторных попыток.

📚 Источники