【AWS / API Gateway】ステージからPOSTやPUTでLambdaを呼び出すと「Internal server error」になる

課題

API Gatewayのステージでステージ変数を設定し、Lambda側でバージョンとエイリアスを設定して紐付けて呼び出すよくある構成で構築し、API Gatewayの画面に出てきたURLを叩いてみると「Internal server error」と表示される。

調査

API Gatewayのステージ変数はちゃんと設定できていて、リソースのテストでステージ変数を入力して実行するとちゃんとレスポンスが返ってくるし、

Lambda側のリソースベースのポリシーステートメントはちゃんと設定できている。

結論

つまらないオチになりますが、結局原因はステージに表示されているURLをクリックしてもGET送信となるだけで、POSTやPUT送信にはならないことが原因でした。レスポンスが別タブで表示されている時点で気が付くべきでしたが、リソースメニューのテストではPOSTやPUTで送信してくれるので、ステージの方でもなんかうまいことURLをクリックするだけでPOST/PUTで送ってくれるのかと思い込んでいたという初歩ミスです。

ターミナルからcurlで実行するとちゃんとレスポンスが返ってきました。