API ステージを REST API のカスタムドメイン名にマッピングする
API マッピングを使用して、API ステージをカスタムドメイン名に接続します。ドメイン名を作成し、DNS レコードを設定したら、API マッピングを使用して、カスタムドメイン名を使用して API にトラフィックを送信します。
API マッピングは、API、ステージ、およびオプションでマッピングに使用するパスを指定します。たとえば、API の production
ステージを https://api.example.com/orders
にマッピングできます。
HTTP API と REST API ステージを同じカスタムドメイン名にマッピングできます。
API マッピングを作成する前に、API、ステージ、およびカスタムドメイン名が必要です。カスタムドメイン名の作成と設定の詳細については、「API Gateway でリージョン別カスタムドメイン名を設定する」を参照してください。
API リクエストのルーティング
API マッピングは、例えば orders/v1/items
と orders/v2/items
のように、複数のレベルで設定できます。
注記
複数のレベルで API マッピングを設定するには、TLS 1.2 セキュリティポリシーでリージョン別カスタムドメイン名を使用する必要があります。
複数のレベルを持つ API マッピングの場合、API Gateway は、一致するパスが最も長い API マッピングにリクエストをルーティングします。API Gateway は、API マッピング用に設定されたパスだけを考慮し、呼び出す API を選択します。API ルートは考慮しません。リクエストに一致するパスがない場合、API Gateway は空のパス (none)
にマッピングした API にリクエストを送信します。
複数のレベルの API マッピングを使用するカスタムドメイン名の場合、API Gateway は、一致するプレフィックスが最も長い API マッピングにリクエストをルーティングします。
たとえば、次の API マッピングを持つカスタムドメイン名 https://api.example.com
を考えてます。
-
API 1 にマッピングされている
(none)
。 -
API 2 にマッピングされている
orders
。 -
API 3 にマッピングされている
orders/v1/items
。 -
API 4 にマッピングされている
orders/v2/items
。 -
API 5 にマッピングされている
orders/v2/items/categories
。
リクエスト | 選択した API | 説明 |
---|---|---|
|
|
リクエストは、この API マッピングと完全に一致します。 |
|
|
リクエストは、この API マッピングと完全に一致します。 |
|
|
リクエストは、この API マッピングと完全に一致します。 |
|
|
API Gateway は、最も長い一致パスを持つ API マッピングを選択します。リクエストの最後にある |
|
|
API Gateway は、最も長い一致パスを持つ API マッピングを選択します。 |
|
|
API Gateway は、空のマッピングをキャッチオールとして使用します。 |
|
|
API Gateway は、一致するプレフィックスが最も長い API マッピングを選択します。 単一レベルのマッピングで設定されたカスタムドメイン名の場合 ( |
制限事項
-
API マッピングでは、カスタムドメイン名とマップされた API が同じ AWS アカウントにある必要があります。
-
API マッピングに含めることができるのは、文字、数字、および
$-_.+!*'()/
の文字だけです。 -
API マッピングのパスの最大文字数は 300 文字です。
-
ドメイン名ごとに、複数のレベルで 200 個の API マッピングを設定できます。
-
TLS 1.2 セキュリティポリシーでは、HTTP API をリージョン別カスタムドメイン名にだけマッピングできます。
-
WebSocket API を HTTP API または REST API と同じカスタムドメイン名にマッピングすることはできません。
API マッピングを作成する
API マッピングを作成するには、最初にカスタムドメイン名、API、およびステージを作成する必要があります。カスタムドメイン名の作成方法については、「API Gateway でリージョン別カスタムドメイン名を設定する」を参照してください。
例えば、すべてのリソースを作成する AWS Serverless Application Model テンプレートについては、GitHub で「Sessions With SAM