Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Serverless
serverless

Serverless

AWS Lambda, API Gateway, ограничения и лучшие практики

Открыть лабораториюv1.0Запускается локально из публичного репозитория

Serverless с FastAPI

Запуск FastAPI в serverless среде (AWS Lambda, Cloud Functions).

#Что такое Serverless?

Serverless — выполнение кода без управления серверами. Провайдер управляет инфраструктурой, вы платите за время выполнения.

#Преимущества

  • Нет управления серверами — провайдер управляет
  • Автомасштабирование — от 0 до тысяч исполнений
  • Оплата за использование — только за время выполнения
  • Высокая доступность — встроенная отказоустойчивость

#Недостатки

  • Cold start — задержка при первом запуске
  • Ограничения — время выполнения, память, размер
  • Vendor lock-in — привязка к провайдеру

#AWS Lambda с FastAPI

#Установка Mangum

pip install mangum

#main.py

from fastapi import FastAPI from mangum import Mangum app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"} @app.get("/items/{item_id}") def read_item(item_id: int): return {"item_id": item_id} # Handler для Lambda handler = Mangum(app)

#serverless.yml

service: fastapi-app provider: name: aws runtime: python3.11 region: us-east-1 memorySize: 256 timeout: 30 functions: api: handler: main.handler events: - http: path: / method: ANY - http: path: /{proxy+} method: ANY plugins: - serverless-python-requirements

#Деплой

npm install -g serverless serverless plugin install -n serverless-python-requirements serverless deploy

#Google Cloud Functions

#main.py

from fastapi import FastAPI from functions_framework import http app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"} @http def main(request): from mangum import Mangum asgi_handler = Mangum(app) return asgi_handler(request.scope, request.receive)

#requirements.txt

fastapi
mangum
functions-framework

#Деплой

gcloud functions deploy main \ --runtime python311 \ --trigger-http \ --allow-unauthenticated \ --entry-point main

#Azure Functions

#function_app.py

import azure.functions as func from fastapi import FastAPI from mangum import Mangum app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"} asgi_app = Mangum(app) def main(req: func.HttpRequest) -> func.HttpResponse: return asgi_app(req.scope, req.receive)

#Оптимизация cold start

#1. Уменьшение размера пакета

# requirements.txt только с необходимым fastapi==0.104.1 mangum==0.17.0 pydantic==2.5.0

#2. Provisioned Concurrency (AWS)

functions: api: handler: main.handler provisionedConcurrency: 5 # Держать 5 инстансов тёплыми

#3. Оптимизация импортов

# Ленивые импорты def get_item(item_id: int): from expensive_module import expensive_function return expensive_function(item_id)

#API Gateway интеграция

#AWS API Gateway

functions: api: handler: main.handler events: - http: path: / method: ANY cors: true - http: path: /{proxy+} method: ANY cors: true

#Custom Domain

custom: customDomain: domainName: api.example.com basePath: '' stage: ${self:provider.stage} createRoute53Record: true

#Переменные окружения

provider: environment: DATABASE_URL: ${ssm:/prod/database-url} SECRET_KEY: ${ssm:/prod/secret-key}

#Локальная разработка

#LocalStack

docker run --rm -it -p 4566:4566 localstack/localstack

#Serverless Offline

serverless plugin install -n serverless-offline serverless offline

#Мониторинг

#AWS X-Ray

provider: tracing: apiGateway: true lambda: true

#CloudWatch Logs

functions: api: handler: main.handler tags: Service: fastapi Environment: prod

#Исполняемая лаборатория

Лаборатория «Mangum, Lambda handler, cold start, lifespan="off"» доступна в публичном GitLab. Она проверяет интеграцию FastAPI с AWS Lambda через Mangum, обработку cold start, lifespan="off" для serverless и ограничения по времени выполнения и памяти.

Склонируйте репозиторий и запустите тесты из его корня:

git clone --branch v1.0 --depth 1 https://gitlab.potapov.me/courses/fastapi_pro.git cd fastapi_pro uv sync --group test uv run --group test pytest serverless/tests

#Чеклист serverless

  • Mangum установлен
  • Handler настроен
  • Serverless Framework настроен
  • Переменные окружения через SSM/Secrets
  • API Gateway настроен
  • Мониторинг включен

Далее: Best practices