手順に従い、Amazon API Gateway REST または HTTP API にカスタムドメイン名を設定したところ、API を呼び出すと、403 "Missing Authentication token" エラーが発生します。
簡単な説明
カスタムドメイン名を使用する API Gateway API は、URL パスが誤った状態で API を呼び出すと 403 "Missing Authentication token" というエラーを返します。
注: API Gateway API ステージの URL を使用した場合は、403 "Missing Authentication token" エラーは返されません。
解決策
API Gateway API 用に設定されたカスタムドメイン名は、API マッピングを使用して API ステージを接続し、カスタムドメイン名を使用して API にトラフィックを送信します。API マッピングには、API、ステージ、カスタムドメイン名があり、必要に応じてマッピングに使用するパスを指定できます。詳細については、「CloudTrail を使用する」を参照してください。
次の例では、カスタムドメイン "https://api.example.com" の API マッピングは次のように設定されています。
| | | | | |
|---|
| API | 例 | ステージ | パス | デフォルト URL | カスタムドメイン の URL |
| abcd3456ef | API 1 | dev | (なし) | https://abcd3456ef.execute-api.us-east-1.amazonaws.com/dev | https://api.example.com |
| wxyz1234ab | API 2 | test | orders | https://wxyz1234ab.execute-api.us-east-1.amazonaws.com/test | https://api.example.com/orders |
| mnop5678qr | API 3 | prod | customers | https://mnop5678qr.execute-api.us-east-1.amazonaws.com/prod | https://api.example.com/customers |
この設定例では、https://abcd3456ef.execute-api.us-east-1.amazonaws.com/dev/resourceA という URL を使用して API 1 に行われたリクエストが、正常に "resourceA" へのトラフィックをルーティングします。これは、ステージ名が "dev" であるリソースに対してリクエストが行われたためです。ただし、URL https://api.example.com/dev/resourceA を使用した同じリクエストでは、403 "Missing Authentication token" エラーが返されます。このエラーは、ステージ "dev" がカスタムドメイン名のパス (なし) にマップされていることが原因です。カスタムドメイン名を使用してリクエストを "ResourceA" にルーティングするには、URL が https://api.example.com/resourceA である必要があります。
同様に、https://wxyz1234ab.execute-api.us-east-1.amazonaws.com/test/resourceB と同等のカスタムドメイン名の URL は https://api.example.com/orders/resourceB となります。これは、API 2 の "test" ステージがカスタムドメイン API マッピングのパス "orders" にマップされているためです。
関連情報
API ゲートウェイから返された HTTP 403 エラーをトラブルシューティングする方法を教えてください
API Gateway REST API エンドポイントでの 403 "Missing Authentication Token" エラーをトラブルシューティングする方法を教えてください
API Gateway でリージョナルカスタムドメイン名を設定する