AWS Lambda

Безсерверні обчислення на основі подій.

AWS Lambda — це безсерверна, керована подіями обчислювальна служба, що надається Amazon Web Services (AWS). Вона дозволяє розробникам запускати код без необхідності виділення або керування серверами. Розробники завантажують свій код як функції Lambda, а AWS автоматично керує інфраструктурою, необхідною для запуску та масштабування цього коду з високою доступністю. Функції запускаються різними подіями, такими як зміни даних у бакеті Amazon S3, оновлення таблиці Amazon DynamoDB або запити [API Gateway](/uk/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. Механізм відображення джерел подій (event source mapping) дозволяє Lambda опитувати джерела подій (наприклад, потоки Kinesis) та викликати функції з пакетами записів. Архітектурні міркування включають оптимізацію виділення пам'яті функції (що також впливає на виділення ЦП), керування залежностями та проектування для ідемпотентності через потенційні повторні спроби.

📚 Джерела