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

Pythonで学ぶLambda パフォーマンスチューニング

Pythonで学ぶLambda パフォーマンスチューニング

Serverless LT初心者向け LT大会 #57 での発表資料
https://serverlesslt.connpass.com/event/364007/

Avatar for yasuaki9973

yasuaki9973

August 24, 2025

More Decks by yasuaki9973

Other Decks in Programming

Transcript

  1. 典型的なコード例 (Python on Lambda) # handler外の処理(コールドスタート時のみ実行される) import boto3 s3_client =

    boto3.client( 's3') def lambda_handler( event, context): # handler内の処理(常に実行される) return {} 6
  2. 主要ライブラリのimport時間と対策 ライブラリ名 バージョン import時間(ms) pandas 2.2.3 2209 Requests 2.32.3 328

    boto3 1.35.66 603 実践的な対策 重いライブラリ: 軽量な代替手段を検討 urllib.request: Requestsの代替で50ms程度に短縮 バッチ処理: 重い処理の切り出し 15
  3. Lambda最適化のフローチャート X-Ray測定 (現状把握) フェーズ判定 ボトルネック特定 → Initフェーズ問題 → • 不要ライブラリ削除

    • 軽量ライブラリに置き換える Invokeフェーズ問題 (CPU依存) → • メモリサイズを256MB〜 1769MBの範囲で調整 Invokeフェーズ問題(IO 依存) → • WebSocketの利用など、別の対 策が必要 16
  4. 【補足資料】検証で利用するプログラム import time from aws_lambda_powertools import Tracer tracer = Tracer()

    def execute_loop(): start_time = time.time() for i in range( 10000000): pass elapsed_time = time.time() - start_time print( f'elapsed_time: {elapsed_time} ') execute_loop() @tracer.capture_lambda_handler def lambda_handler( event, context): execute_loop() return {} 18