AWS Lambda:API GatewayとApplication Load Balancerの違い


AWS Lambdaを使ってサーバーレスでWeb APIを作る場合、Lambdaの呼び出し元としてAPI Gateway (API GW) もしくはApplication Load Balancer (ALB) のどちらかを選択することになる。この選択基準となる両者の違いを整理した。

API Gateway特有の機能

プロトコル・ポート番号

  • API GWは443番でのHTTPS (TLS 1.2) のみをサポートする。(VPC Endpoint経由での呼び出しはできるが、この場合でもHTTPSのみとなる。)
  • ALBは任意のポート番号でのHTTP/HTTPS(TLSバージョンも選択肢がある)をサポートする。

実行可能時間(タイムアウト時間)

リクエスト・レスポンスサイズ

Request Event(参考

  • evt.headers (Request)
    • API GWでは大文字小文字を区別した状態で設定するが、ALBではヘッダ名は小文字化された状態で設定する。
  • evt.queryStringParameters (Request)
    • クエリストリングが指定されない場合、API GWは null を設定するが、ALBは {} を設定する。
    • クエリストリングのキー・バリューについて、API GatewayはURLデコードされた状態で設定するが、ALBはデコード前の状態で設定する。
  • evt.multiValueHeaders / evt.multiValueQueryStringParameters (Request)
    • API GWではデフォルトで設定されるが、ALBでは設定で有効化する必要がある。

Response Event(参考

  • ALBではstatusDescription、isBase64Encoded、headers(Multi Value Headerを有効化している場合はmultiValueHeder)の指定が必須となる。

コスト

  • 一定のリクエスト頻度までであれば、時間課金があるALBよりも実行回数による課金であるAPI GWの方が安いが、大量のリクエストを受ける場合はALBの方が安くなる。(参考

参考