API Gateway REST API のプライベート統合を使ってホストヘッダーを転送するにはどうすればよいですか?
最終更新日: 2022 年 11 月 29 日
Amazon API Gateway エンドポイントまたはカスタムドメインのホストヘッダー値を使用したいと考えています。API Gateway REST API のプライベート統合を使ってホストヘッダーを転送するにはどうすればよいですか?
簡単な説明
Amazon API Gateway は、元のリクエストで受け取ったホスト値を統合エンドポイントに上書きします。Amazon API Gateway は、統合リクエストエンドポイント URL に応じてホスト値を割り当てます。
バックエンドで API Gateway エンドポイントのホストヘッダー値を使用するには、カスタムヘッダーを使います。リクエストホストヘッダーの値を含むカスタムヘッダーを統合リクエストで使用できます。
解決方法
API Gateway REST API を作成する
1. API Gateway Console にログインします。
2. [Create API (API の作成)] を選択します。
- または -
(初めて API Gateway を使用する場合) サービスの特徴を紹介するページが表示されます。[REST API] で [Build (ビルド)] を選択します。[Create Example API (サンプル API の作成)] ポップアップが表示されたら [OK] を選択します。
3. [REST API] ペインの [Choose an API type (API タイプを選択)] で [Build (ビルド)] を選択します。
4. [新しい API の作成] で、[新規 API] を選択します。
5. [Setting (設定) ]で、次の操作を実行します。
[API name (API 名)] に API の目的を説明する名前を入力します。例:ForwardHostHeader。
(オプション)「Description」(説明) には、API の目的の説明を簡潔に入力します。たとえば、「プライベートインテグレーション用にホストヘッダーを転送する」などです。
[Endpoint Type (エンドポイントの種類)] では、[Regional (リージョン)]、[Edge optimized (エッジ最適化)]、または [Private (プライベート)] のいずれかを選択します。
6. [Create API (API の作成)] を選択します。
API のメソッドリクエストと統合リクエストを設定します
1. API Gateway Console にログインします。
2. 指示に従い、 API Gateway コンソールを使用してプライベート統合を含む API を作成します。
3. メソッドリクエストで、 HTTP リクエストヘッダー をホストとして追加します。
4. 統合リクエストで、[HTTP Headers (HTTP ヘッダー)] を展開し、[Add header (ヘッダーを追加)] を選択します。
5. カスタムヘッダーの名前を入力します。たとえば、 my_host と入力します。
6. マッピング元に、メソッドリクエストを入力します。たとえば、method.request.header.host と入力し、チェックマークアイコンを選択します。
新しいステージに API をデプロイします。
1. API Gateway Console にログインします。
2. 「REST API をステージにデプロイする」の手順に従います。詳細については、「API Gateway コンソールを使用したステージのセットアップ」を参照してください。
3. [Stage Editor (ステージエディタ)] ペインで [Invoke URL (URL の呼び出し)] をクリップボードにコピーします。この URL を使用して API を呼び出すことができます。
REST API 呼び出し URL の例:
https://1a2bc3d456.execute-api.us-east-1.amazonaws.com/stage
4. バックエンドに Application Load Balancer を使用する場合は、ルールを追加 して構成をテストできます。条件に「http ヘッダー」を選択し、API Gateway ホスト値と同じヘッダーおよび値として「my_host」を指定します。
5. API ゲートウェイ URL をブラウザウィンドウにペーストして API を呼び出します。API Gateway の「my_host」のヘッダー設定は、API Gateway のホスト値をApplication Load Balancer に転送します。Application Load Balancer は条件セットと一致し、設定されたとおりに応答を返します。