Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SAM + FastAPI + Mangum でお手軽サーバーレス

SAM + FastAPI + Mangum でお手軽サーバーレス

SAM + FastAPI + Mangum でお手軽サーバーレス
Strands Agents SDKをFastAPIに統合して、動くか試してみました。

Avatar for abimaru

abimaru

June 09, 2025
Tweet

Other Decks in Technology

Transcript

  1. SAM + FastAPI + Mangum で お手軽サーバーレス Strands Agents SDK

    使ってみた 2025/06/07 JAWS-UG OITA 発表 @あびまる(釘宮) JAWS-UG 発表資料
  2. 自己紹介 名前: あびまる(釘宮) 所属: 株式会社スリーシェイク 経験言語: TypeScript, Golang, Python, Kotlin

    環境: AWS, Google Cloud etc… GitHub: https://github.com/daikugimiya0715 JAWS-UG 発表資料 2
  3. 今日話すこと SAM + FastAPI + Mangumを使ったサーバーレスAPI開発について説明します。 その後に、Strands Agent SDKを統合した物のデモをします。 1.

    なぜ SAM + FastAPI + Mangum なのか 2. 実装のポイント 3. コスト効率とスケーラビリティ 4. OpenAPI と Swagger の活用 5. 生成 AI 時代の Python 活用 6. デモ: Strands SDK 統合 JAWS-UG 発表資料 3
  4. 解決策: SAM + FastAPI + Mangum 3 つの技術を組み合わせた現代的なアプローチ SAM: Infrastructure

    as Code でインフラ管理 FastAPI: 高速で直感的な API 開発 Mangum: サーバーレス環境での ASGI 実行 メリット 開発効率: 型安全で高速な開発 コスト効率: 使った分だけの課金 運用効率: サーバー管理不要 + JAWS-UG 発表資料 5
  5. SAM (Serverless Application Model) AWS 公式のサーバーレス開発フレームワーク Infrastructure as Code: YAML

    でインフラ定義 ローカル開発: sam local start-api で即座にテスト 簡単デプロイ: sam build && sam deploy SAM の強み CloudFormation 拡張: AWS リソースを簡潔に定義 依存関係管理: 自動的にパッケージングとデプロイ 実際のメリット 学習コスト低: CloudFormation より簡単 デバッグ効率: ローカルで API をテスト可能 JAWS-UG 発表資料 6
  6. FastAPI + Mangum FastAPI の特徴 自動 OpenAPI 生成: /docs で即座に

    API 仕様確認 型安全: Python の型ヒントでバグ防止 高パフォーマンス: 非同期処理対応 Mangum の役割 ASGI ブリッジ: FastAPI を Lambda で実行 Zero Configuration: 設定不要で動作 ECS 移行対応: 同じコードでコンテナ化可能 JAWS-UG 発表資料 7
  7. 実装例 from fastapi import FastAPI from mangum import Mangum from

    pydantic import BaseModel app = FastAPI(title="サーバーレス API") class Item(BaseModel): name: str price: int @app.post("/items/") async def create_item(item: Item): return {"item": item, "status": "created"} # Lambda用ハンドラー handler = Mangum(app) JAWS-UG 発表資料 8
  8. なぜサーバーレスなのか? コスト面のメリット アイドル時コストゼロ: 使用していない時は課金なし 従量課金: リクエスト数に応じた課金 予算管理: 使用量に応じた透明な課金 運用面のメリット サーバー管理不要:

    インフラ運用から解放 自動スケーリング: トラフィック増加に自動対応 ECS 移行: コード変更なしで可能 ← これが本当に嬉しい 実際の開発環境では月額数百円程度で運用可能! JAWS-UG 発表資料 9
  9. なぜ Python なのか? 豊富な AI/ML 系 SDK OpenAI, Anthropic, AWS

    Bedrock Langchain, LlamaIndex etc… データサイエンスエコシステム # 最新のAI SDKが揃っている import openai import anthropic import boto3 # Bedrock from strands import Agent # 今回のデモ JAWS-UG 発表資料 10
  10. ついでに Strands SDK 使ってみる 実装例 from strands import Agent from

    strands.models import BedrockModel # Bedrock Claude を使用 bedrock_model = BedrockModel( model_id="claude-3-sonnet", region_name="ap-northeast-1" ) agent = Agent( model=bedrock_model, tools=[calculator, shell, use_aws] ) @app.post("/chat") async def chat_with_agent(message: str): response = await agent.stream_async(message) return StreamingResponse(response) JAWS-UG 発表資料 11
  11. 実際のディレクトリ構成 fast-api-sam/ ├── app/ │ ├── __init__.py │ └── main.py

    # FastAPI アプリ ├── template.yaml # SAM テンプレート ├── samconfig.toml # SAM 設定 ├── pyproject.toml # Python 依存関係 └── tests/ └── test_main.py # テスト JAWS-UG 発表資料 12
  12. まとめ SAM + FastAPI + Mangum の価値 POCから本格運用まで一気通貫で対応できる、モダンなサーバーレスAPI開発スタッ クです。 1.

    開発効率: 現代的な API 開発体験 2. コスト効率: 使った分だけの従量課金 3. 拡張性: ECS への移行も容易 4. AI 統合: Python 生態系の恩恵 5. ドキュメント: 自動生成で保守コスト削減 JAWS-UG 発表資料 15