サーバーレスAPI設計 API GatewayとLambda、DynamoDBでのスロットリングと冪等性
本記事はSAA(Solutions Architect Associate)を目指す方向けに、API Gateway・Lambda・DynamoDBを組み合わせたサーバーレスAPIの設計を解説します。試験では、急なアクセス増加や重複リクエストにどう備えるかが問われます。
覚え方のフレームは3つの観点です。制限(呼び出し過多を防ぐ)・吸収(急増を平準化する)・冪等性(重複を安全に扱う)。
制限 API Gatewayのスロットリング
API Gatewayではアカウント全体・ステージ・メソッド単位でリクエストレート制限とバーストの上限を設定できます。特定の利用者やAPIキーが過剰にリクエストを送り、他の利用者に影響が出るのを防ぎたい要件では使用量プランとAPIキーを組み合わせて個別に制限します。
吸収 SQSによるバッファリング
Lambdaの同時実行数の上限に達しそうな急激なアクセス増加が見込まれる場合、API GatewayとLambdaの間にSQSキューを挟み、Lambdaが処理できるペースでメッセージを取り出す構成にします。ピーク時のリクエストを取りこぼさず、後続処理は多少遅延してもよい要件で選びます。
冪等性 DynamoDBの条件付き書き込み
ネットワークの再試行などで同じリクエストが複数回届いても結果が変わらないようにするには、リクエストにクライアント側で発行した一意のIDを持たせ、DynamoDBへの書き込み時に条件式(attribute_not_exists)でそのIDが未処理の場合のみ書き込む設計にします。決済や注文登録のように重複処理が許されない要件で必須の設計です。
| 課題 | 対処 | 使いどころ |
|---|---|---|
| 特定利用者の過剰呼び出し | 使用量プランとAPIキーでのスロットリング | 利用者ごとに公平な上限を設けたい |
| 急激なアクセス増加 | SQSによるバッファリング | 取りこぼしを防ぎ非同期に処理したい |
| 重複リクエスト | DynamoDBの条件付き書き込みで冪等性確保 | 決済など重複処理を避けたい |
チェックリスト
- API Gatewayの使用量プランとAPIキーの役割を説明できる
- SQSを挟んでLambdaの処理ペースを制御する構成を説明できる
- DynamoDBの条件付き書き込みで冪等性を確保する方法を説明できる
- スロットリングとバッファリングの目的の違いを説明できる
まとめ
サーバーレスAPIは「制限・吸収・冪等性」の3観点で守りを固め、想定される負荷と重複リスクに応じて組み合わせるのが定石です。この記事の理解度はクイズで確認し、最新の試験範囲はAWS認定 公式ページで確認しましょう。
SAA(ソリューションアーキテクト アソシエイト) におすすめの教材
徹底攻略 AWS認定 ソリューションアーキテクト − アソシエイト教科書 第3版[SAA-C03]対応
AWS認定ソリューションアーキテクト−アソシエイト問題集
これだけでOK! AWS認定SAA(SAA-C03)試験突破講座
AWS認定SAA 本番模試(6回分/390問)
本セクションにはAmazonアソシエイト・Udemyアフィリエイトのリンクが含まれます。