[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】API Gateway/LambdaでResponse BodyをGZIP圧縮して軽量化 [Zenn_Python] | Summary by TechDistill

> Source: Zenn_Python
Execute Primary Source

// Problem

開発者がサーバーレス構成を運用中、レスポンスサイズ超過によるエラーに直面した。具体的には、Lambdaのペイロード制限に抵触し、以下の問題が発生している。


  • Lambdaの同期レスポンス制限である6MBを超過した。
  • RequestEntityTooLargeエラーが返却される。
  • 既存APIのフィールド削減は、影響範囲が広く困難である。

// Approach

開発者は、既存APIを維持しつつ軽量化するため、GZIP圧縮を採用した。API GatewayとLambdaの設定を変更し、バイナリ通信を可能にする手順である。


1.API GatewayのbinaryMediaTypes*/*を設定する。
2.LambdaでJSONをUTF-8バイト列に変換する。
3.gzip.compress()を用いてデータを圧縮する。
4.圧縮データをBase64エンコードする。
5.isBase64Encoded: trueContent-Encoding: gzipを付与して返却する。

// Result

この手法により、レスポンスサイズを大幅に削減し、制限を回避できる見込みを得た。具体的な成果と特性は以下の通りである。


  • レスポンスサイズが約半減することが期待できる。
  • API Gatewayの10MB制限の範囲内で、より大きなデータを扱える。
  • CloudFront利用時、既に圧縮済みであれば二重圧縮は発生しない。

Senior Engineer Insight

> 6MBの壁は、データ量が増大するシステムにおいて避けて通れない課題だ。本手法は即効性がある。ただし、LambdaのCPU負荷増大やクライアントの負荷を考慮せよ。より大規模なデータには、ストリーミングレスポンス(200MB制限)への移行も検討すべきである。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。