AWS APIGatewayでつまづいた

現在の案件でAWSの他のサービスにあるデータを使って処理を実装しているので、どうしてもAWS Lambdaを使う必要がありました。そのため、久しぶりにAPI Gatewayを使ったところ、レスポンス情報として403エラーが返ってきてしまうので、色々ためしました。その備忘録の記事です。

手当たり次第に解決策を模索

そもそもこのAPI Gatewayの構築は僕が実装したのではなく、他のメンバーが途中まで実装をしてくれているところに僕が手を加えたので、どこができていないのかの確認から始まりました。

403のエラーが出るということは、権限周りがうまくいっていないのは皆さんすぐにわかったと思います。僕もそうだと思い知っている限りの修正を加えました。

デプロイがされているか

そもそも、リソースの設定をやるだけやってデプロイをやっていないではないかと思い確認してみると、デプロイがされていませんでした。(まだ結合テストの段階だからそれはデプロイしてないか。。。)

なので、リソース部分でデプロイの作業を実施

→結果 特に変化なし

CORSの有効化

確か、デフォルトでは有効化になっているから問題ないでしょ?とは思いつつ一応確認はしてみました。

→結果 やっぱり有効化になってた

CloudWatchでログを確認

もうわかんなくなってきたので、CloudWatchのログを見ようと確認してみました。ですが、デフォではログの書き出しは行なっていないようでした。なので、新しくロールを作成してログを確認

→結果 なぜかログが出ない?

ステージの部分でログを有効化していなかったのが原因のようでした。なので、ログを有効化にしてからもう一度確認。

リソースポリシーの設定

次にポリシーの部分の設定ができていないんだと思い、確認してみるとポリシー部分は白紙状態でした。

これだ!っと思ったのでポリシーを修正

→結果 特に変化なし

 

まとめ

どうやらリソースポリシーの設定がうまくできていなかったようでした。

API Gatewayで困ったときはこの記事を参考に403エラーを解決してください