Налаштування функцій Lambda

Безсерверні застосунки з AWS Lambda

Claudio Canales

Senior DevOps Engineer

Чому конфігурація має значення

  • Той самий код може працювати по-різному за різних налаштувань.
  • Конфігурація визначає продуктивність, вартість і безпеку.
  • Мета — передбачувана робота в dev і prod.

Той самий код, інші налаштування

Безсерверні застосунки з AWS Lambda

Код vs конфігурація

Пакет коду

  • Пакет коду
  • Логіка обробника + залежності.
  • Зміни потребують деплою.

Конфігурація функції

  • Конфігурація функції
  • Пам'ять, тайм-аут, змінні середовища.
  • Роль виконання + шари.
Безсерверні застосунки з AWS Lambda

Чим ви керуєте

  • Runtime + handler: який код запускає Lambda.
  • Пам'ять + тайм-аут: продуктивність, вартість, безпека.
  • Змінні середовища: конфігурація без хардкоду.
  • Роль виконання: дозволи для AWS API.
  • Шари: спільні залежності для функцій.

Регулятори конфігурації Lambda

Безсерверні застосунки з AWS Lambda

Основи runtime і handler

  • Runtime = мовне середовище (наприклад, Python).
  • Handler = точка входу, яку викликає Lambda.
  • Формат обробника: file.function.
  • Приклад: lambda_function.lambda_handler.

Розбір рядка обробника

Безсерверні застосунки з AWS Lambda

Рядок обробника: що може піти не так

# lambda_function.py
def lambda_handler(event, context):
    return {"statusCode": 200}

Імпорт, потім виклик обробника

Безсерверні застосунки з AWS Lambda

Роль виконання (IAM)

  • IAM = Identity and Access Management (дозволи).
  • Роль виконання визначає, що може робити ваша функція.
  • Вона контролює, які AWS API може викликати код.

Роль виконання як перепустка

Безсерверні застосунки з AWS Lambda

Що таке шар Lambda?

  • Шар — це ZIP, який ви приєднуєте до функції.
  • Lambda робить файли шару доступними під час виконання в /opt.
  • Використовуйте шари для спільних бібліотек і утиліт.
  • Оновіть шар один раз — його можуть використати кілька функцій.

Шар монтується в /opt

Безсерверні застосунки з AWS Lambda

Де з'являються шари під час виконання

  • Код функції монтується в /var/task.
  • Приєднані шари — в /opt.
  • Lambda також надає тимчасову теку /tmp.

Теки під час виконання: /var/task, /opt, /tmp

Безсерверні застосунки з AWS Lambda

Пам'ять також впливає на CPU

  • Більше пам'яті → більше CPU.
  • Може зменшити час виконання для CPU-задач.
  • Загальна вартість залежить від тривалості й пам'яті.

Більше пам'яті — більше CPU

Безсерверні застосунки з AWS Lambda

Налаштовуйте пам'ять за вимірюваннями

  • Почніть із розумного значення (наприклад, 256 MB).
  • Тестуйте на реалістичних подіях.
  • Порівняйте тривалість і вартість для різних обсягів пам'яті.

Підбір пам'яті: міряйте тривалість і вартість

Безсерверні застосунки з AWS Lambda

Тайм-аути та безпечне виконання

  • Тайм-аут зупиняє некеровані виконання.
  • Перевіряйте час, що лишився, перед довгою роботою.
  • Швидко завершуйте з помилкою й за потреби повторюйте.

Тайм-аут як запобіжний таймер

Безсерверні застосунки з AWS Lambda

Покроково: перевірка часу, що лишився

def lambda_handler(event, context):
    time_left = context.get_remaining_time_in_millis()
    if time_left < 500:
        raise TimeoutError("Not enough time left")
    return {"statusCode": 200}

Захист через відлік у context

Безсерверні застосунки з AWS Lambda

Змінні середовища

  • Тримайте конфігурацію поза кодом.
  • Розділяйте налаштування dev/test/prod.
  • Для чутливих значень використовуйте Secrets Manager.

Змінні середовища керують поведінкою

Безсерверні застосунки з AWS Lambda

Покроково: читання змінних середовища

import os

STAGE = os.getenv("STAGE", "dev")
LOG_LEVEL = os.getenv(
    "LOG_LEVEL", "INFO"
)

Значення за замовчуванням роблять локальні тести безпечнішими

  • Імпортуйте os, щоб читати змінні середовища.
  • os.getenv повертає значення або дефолт.
Безсерверні застосунки з AWS Lambda

Типові помилки конфігурації

  • Хардкод стадій у коді.
  • Надто малий тайм-аут або відсутні дозволи IAM.
  • Секрети у відкритих змінних середовища.

Підводні камені та поради

Безсерверні застосунки з AWS Lambda

Давайте потренуємось!

Безсерверні застосунки з AWS Lambda

Preparing Video For Download...