[AWS] API Gateway HTTP API のデフォルトルートの挙動を確認してみた
2026-07-25
HTTP API にはデフォルトルートなるルーティングがあります。 これは他のどのルートにもマッチしなかったときに呼ばれるいわゆるワイルドカード的な存在です。 REST API にはこのような仕組みは存在しません。 どのような挙動をするのか確認してみました。
構成
API Gateway と Lambda を作ります
GET /hello とデフォルトルート ($default) の2つを用意し、 どちらのルートも Lambda へリクエストを向けます
AWSコンソールはこのような感じです。
Terraform
</>
メモ
API Gateway です。HTTP API を使います
デフォルトルートです
Lambda です。デフォルトルートおよび GET /hello のバックエンドとなります
Lambda では event をログ出力します
API Gateway のステージです。デフォルトステージにします
検証
では、実際に確認していきましょう。 まずは GET /hello からです。
GET /hello
curl 'https://{id}.execute-api.{region}.amazonaws.com/hello'
こちらは API Gateway へルートが定義されてますので、デフォルトルートは通りません。 Lambda へも "routeKey": "GET /hello" という値が渡ってきてます。
GET /not-exists
curl 'https://{id}.execute-api.{region}.amazonaws.com/not-exists'
こちらは未定義のルートです。そのためデフォルトルートへ入ります。 Lambda へも "routeKey": "$default" という値が渡ってきました。
POST /not-exists
curl -X POST --json '{"a":"aa"}' 'https://{id}.execute-api.{region}.amazonaws.com/not-exists'
POST でも同じくデフォルトルートへ入ります。
DELETE /not-exists
curl -X DELETE 'https://{id}.execute-api.{region}.amazonaws.com/not-exists'
DELETE でも同じくデフォルトルートへ入ります。
QUERY /not-exists
curl -X QUERY --json '{"a":"aa"}' 'https://{id}.execute-api.{region}.amazonaws.com/not-exists'
最近標準化された HTTP QUERY メソッドでも同じくデフォルトルートへ渡りました。 ほかの HTTP メソッドでも試しましたが、マッチするルートがなければとにかくデフォルトルートへ渡るようです。
POST /hello
curl -X POST --json '{"a":"aa"}' 'https://{id}.execute-api.{region}.amazonaws.com/hello'
いちおう POST /hello も呼び出しました。 これも未定義ですのでデフォルトルートに入ります。
Links
おわり
デフォルトルートは便利な機能ですが、実際どういうユースケースがあるのだろうと思い挙動を検証してみました。