Amazon API Gateway エンドポイントまたはカスタムドメインのホストヘッダー値を使用したいと考えています。API Gateway REST API のプライベートインテグレーションを使用してホストヘッダーを転送したいです。
簡単な説明
Amazon API Gateway は、元のリクエストで受け取ったホスト値を統合エンドポイントへ上書きします。統合リクエストのエンドポイント URL に応じて、Amazon API Gateway はホスト値を割り当てます。
バックエンドで API Gateway エンドポイントのホストヘッダー値を使用するには、カスタムヘッダーを使用します。リクエストホストヘッダーの値を含む統合リクエストのカスタムヘッダーを使用します。
解決策
API Gateway REST API を作成する
1. API Gateway コンソールを開きます。
2.[API の作成] を選択します。
-または-
API Gateway を初めて使用する場合は、サービスを紹介するページが表示されます。[REST API] で、[ビルド] を選択します。[サンプル API の作成] ポップアップウィンドウが表示されたら、[OK] を選択します。
3.[API タイプを選択] の [REST API] ペインで [ビルド] を選択します。
4.[新規 API の作成] で、[新規 API] を選択します。
5.[設定] に、次の値を入力します。
[API 名] には、API の目的を説明する名前を入力します。例: [転送ホストヘッダー]。
(オプション) [説明] には、API の目的の簡単な説明を入力します。たとえば、[プライベートインテグレーションの転送ホストヘッダー]。
[エンドポイントタイプ] には、[リージョナル]、[エッジ最適化]、または [プライベート] のいずれかを選択します。
6.[API の作成] を選択します。
API のメソッドリクエストと統合リクエストを設定する
1. API Gateway コンソールを開きます。
2. 手順に従い、API Gateway コンソールを使用してプライベートインテグレーションの API を作成します。
3. [メソッドリクエスト] で、[HTTP リクエストヘッダー]をホストとして追加します。
4. [統合リクエスト] で [HTTP ヘッダー] を展開し、[ヘッダーを追加] を選択します。
5. カスタムヘッダーの名前を入力します。たとえば、[my_host]。
6. [マップ元] に、メソッドリクエストを入力します。たとえば、[method.request.header.host] などです。次に、チェックマークアイコンを選択します。
API を新しいステージにデプロイ
1. API Gateway コンソールを開きます。
2. 手順に従って REST API をステージにデプロイします。詳細については、「API Gateway コンソールを使用したステージの設定」を参照してください。
3.[ステージエディター] ペインで、[呼び出し URL] をクリップボードにコピーします。この URL を使用して API を呼び出します。
REST API 呼び出し URL の例:
https://1a2bc3d456.execute-api.us-east-1.amazonaws.com/stage
4. バックエンドに Application Load Balancer を使用している場合は、設定をテストするルールを追加します。条件として [http header] を選択し、API Gateway のホスト値と同じヘッダー、値として [my_host] を指定します。
5.API ゲートウェイ URL をブラウザウィンドウに貼り付けて API を呼び出します。API Gateway の「my_host」ヘッダー設定は、API ゲートウェイのホスト値を Application Load Balancer に転送します。Application Load Balancer は条件セットを照合し、設定どおりに応答を返します。
関連情報
API Gateway コンソールを使用したリクエストとレスポンスのデータマッピングを設定する
API Gateway コンソールを使用して API をセットアップする
Amazon API Gateway に関する重要な注意事項
API Gateway REST API を Application Load Balancer と統合する方法を教えてください。