AWS
APIGateway

API Gatewayのデフォルトのゲートウェイのレスポンスを変更

docomo Developer support@akatsukahaです

API GatewayでデプロイしているAPIに対して想定外のアクセスをされたときに返却されるAPI Gatewayのデフォルトのエラーレスポンスが不親切だと思うことがあります.エラーレスポンスをカスタマイズする方法を記載します.


1. API Gatewayの環境

API Gatewayにて下記の通りAPIをデプロイしているとします.

リソース

00.png

/aaa/bbb(GET)の統合レスポンス内容

01.png

デプロイされたステージ

02.png


2. API Gatewayのエラーメッセージの確認

下記の通りv1/aaa/bbbへのアクセスは想定どおりのレスポンスです.

$ curl https://1a2gskfus6.execute-api.ap-northeast-1.amazonaws.com/v1/aaa/bbb

{"message":"hello world"}

しかし,メソッドを定義していないリソースに対するアクセスをした場合,API Gatewayのデフォルトの値が返却されます.{"message":"Missing Authentication Token"}と返されてもなんじゃこれ?って感じになります.

$ curl https://1a2gskfus6.execute-api.ap-northeast-1.amazonaws.com/v1/aaa

{"message":"Missing Authentication Token"}


3. API Gatewayのゲートウェイレスポンスのカスタマイズ

では,デフォルトのゲートウェイのレスポンスをカスタマイズしたいと思います.

まずデフォルトのゲートウェイのレスポンスはゲートウェイのレスポンスにて定義されています.ここに記載されてい内容を変更します.

03.png

今回はMissing Authentication Tokenを変更したいので,下記の通り[Missing Authentication Token403]を変更します.{"message":"Forbidden"}と変更し,[保存]します.

04.png

これだけではデプロイ済みのAPIに反映されないので,再度APIをデプロイしてください.

下記の通り試してみると,正しく反映されていることがわかります.

$ curl https://1a2gskfus6.execute-api.ap-northeast-1.amazonaws.com/v1/aaa/bbb

{"message":"hello world"}HayatonoMacBook-puro:~ akatsuka

$ curl https://1a2gskfus6.execute-api.ap-northeast-1.amazonaws.com/v1/aaa
{"message":"Forbidden"}


4. 参考