エンジニャーリング

技術ときどきネコ

API Gateway + Lambda で403エラーが出て困った話

API Gateway を private に配置して、VPCエンドポイントからのアクセスを試みた。

タイムアウトした。
うむうむ、エンドポイントに設置したSGだなとインバウンドをセットして接続したところ、今度は403エラーに。

これは権限周りの設定のエラーになるので、resouce policy もセットして接続を試みた。

うん、403エラー。何故だ?!
調べても調べても resouce policy にセットしたら OK だと書かれてる。
以前設置したAPI Gatewayの設定を見ても同じような設定になっていて何ら問題はなさそう。

はて・・・どこの設定に抜けがあるのか??

とうとう英語のページにも手を出して調査を続ける。
そこにはこんな記載が。

if you update the resource policy after the API is created, you’ll need to deploy the API to propagate the changes after you’ve attached the updated policy.

APIの作成後にリソースポリシーを更新する場合は、更新されたポリシーを添付した後で変更を反映するためにAPIデプロイする必要があります

なん・・・だ・・・と・・・?!デプロイ?!!!

はい、デプロイ忘れてました。。。
API Gateway あまり使わないので思いつきもしなかった。
公開系に反映するのにはデプロイが必要なのです。

サクッとデプロイしたら難なく通りましたとさ。
2hくらい無駄にしてしまった。
Terraform で自動更新できるようにセットしたからもう忘れない(はず)