背景
事象
GETメソッドの[統合リクエスト]-[マッピングテンプレート]-[リクエスト本文のパススルー]を[リクエストの Content-Type ヘッダーに一致するテンプレートがない場合]に設定すると、GETリクエストではステータスコード200でレスポンスが返るが、HEADとOPTIONSリクエストでは403 Forbiddenが返る。403 Forbiddenのレスポンスボディは
{"Message":"User is not authorized to access this resource"}
。一方、GETメソッドの[統合リクエスト]-[マッピングテンプレート]-[リクエスト本文のパススルー]を[テンプレートが定義されていない場合 (推奨)]に設定すると、GETリクエストではステータスコード403 Forbiddenでレスポンスが返る。403 Forbiddenのレスポンスボディは
{"Message":"User is not authorized to access this resource"}
。一方、HEADとOPTIONSリクエストでは200が返る。
原因
因果関係はよく分からなかったが、下記ヘルプに従いオーソライザで認可のキャッシュの[有効]のチェックを外すと、GET/HEAD/OPTIONSともオーソライザが成功した場合は200、失敗した場合は403 Forbiddenを返すようになった。 https://aws.amazon.com/jp/premiumsupport/knowledge-center/api-gateway-403-error-lambda-authorizer/#Resolve_.22not_authorized_to_access_this_resource.22_errors_from_the_Lambda_authorizer