[AWS] API Gateway HTTP API のデフォルトルートの挙動を確認してみた

2026-07-25
HTTP API にはデフォルトルートなるルーティングがあります。
これは他のどのルートにもマッチしなかったときに呼ばれるいわゆるワイルドカード的な存在です。

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