こんにちは、yassanです。
今回は、API Gatewayのカスタムドメイン設定後に403が返る時の対処法について紹介します。
カスタムドメイン設定後に403が返る時の対処法
まず、カスタムドメインの設定方法についてですが、
おそらく公式ドキュメントや他の技術ブログなどを参考に構築が完了しているのだと思います。
大まかな流れをおさらいすると、
- Route53にホストゾーンを作成する。
- 利用するドメインのACMを取得する。
- API Gatewayのカスタムドメインを作成する。
(副次的にClondFrontディストリビューションを作成する。) - API GatewayのカスタムドメインをAPIマッピングする。
- Route53のホストゾーンにAPI Gatewayへ向くAliasレコードを作成する。
このような流れで作成しているかと思います。
まずは、この設定に問題がないかを確認してください。
例えば、確認点として以下が挙げられます。
- ACMの検証が完了している。
Route53にCNAMEレコードを作成してドメイン認証が完了させておく必要があります。 - API GatewayへのAliasレコードの値がcoudfront.netになっている。
エッジ最適化を選択している場合は、cloudfrontディストリビューションが作成されているはずです。 - リソースポリシーで特殊な制限をつけていない。
リソースポリシーによってリクエストがはじかれている可能性があります。
これらに問題がなかった場合、カスタムドメインのパスの仕様が関係しているかもしれません。
具体的には、カスタムドメインでリクエストするときは、エンドポイントにステージを含めなくてよくなっています。
公式ドキュメントは下記になります。
https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/rest-api-mappings.html
このドキュメントの通り、カスタムドメインで呼び出す場合は、ステージがエンドポイントに不要になります。
例えば、デフォルトのエンドポイントが「api.default.com/prod/orders」として、
APIマッピングでprodステージに設定した場合、カスタムドメインで呼び出すエンドポイントは「api.example.com/orders」になります。
これに気づかず、ドメインの部分だけ書き換えてテストをしていた場合、いつまで経ってもリクエストが正常に通らないことになります。
カスタムドメインを設定する時は、併せてAPIマッピングの仕様を理解するようにするのがおすすめです。