プロキシリソースとのプロキシ統合を設定する - Amazon API Gateway

プロキシリソースとのプロキシ統合を設定する

API Gateway API でプロキシリソースとのプロキシ統合を設定するには、以下のタスクを実行します。

  • greedy パス変数 {proxy+} を使用してプロキシリソースを作成します。

  • プロキシリソースに ANY メソッドを設定します。

  • HTTP または Lambda 統合タイプを使用してリソースおよびメソッドをバックエンドに統合します。

注記

greedy パス変数、ANY メソッド、およびプロキシ統合タイプは、よく一緒に使用されますが独立した機能です。特定の HTTP メソッドを greedy リソースに設定することも、プロキシ以外の統合タイプをプロキシリソースに適用することもできます。

API Gateway は、Lambda プロキシ統合または HTTP プロキシ統合を使用した処理方法に一定の制約と制限を設定しています。詳細については、「Amazon API Gateway に関する重要な注意点」を参照してください。

注記

パススルーによるプロキシの統合の使用時に、ペイロードのコンテンツタイプを指定していない場合は、API Gateway からデフォルトの Content-Type:application/json ヘッダーが返されます。

プロキシリソースが最も便利なのは、HTTP プロキシ統合または Lambda プロキシ統合のいずれかを使用してバックエンドと統合されている場合です。

プロキシリソースとの HTTP プロキシ統合

API Gateway REST API の HTTP_PROXY によって指定される HTTP プロキシ統合は、メソッドリクエストをバックエンドの HTTP エンドポイントと統合するために使用します。この統合タイプでは、API Gateway は、一定の制約と制限に従って、フロントエンドとバックエンドとの間でリクエストとレスポンスの全体を渡すだけです。

注記

HTTP プロキシ統合では、複数の値を持つヘッダーやクエリ文字列がサポートされます。

HTTP プロキシ統合をプロキシリソースに適用するときは、単一の統合セットアップを使用して、HTTP バックエンドのエンドポイント階層の一部または全体を公開するように API を設定できます。たとえば、バックエンドのウェブサイトがルートノード (/site) からツリーノードで複数のブランチとして編成されているとします (/site/a0/a1/.../aN/site/b0/b1/.../bM など)。ANY の URL パスを使用して /api/{proxy+} のプロキシリソースで /site/{proxy} メソッドをバックエンドのエンドポイントと統合した場合、単一の統合リクエストで、[a0, a1, ..., aN, b0, b1, ...bM, ...] のいずれかで HTTP オペレーション (GET、POST など) をサポートできます。代わりに、特定の HTTP メソッド (たとえば GET) にプロキシ統合を適用した場合、返される統合リクエストは、それらの任意のバックエンドノードに対して指定したオペレーション (つまり GET) で有効です。

プロキシリソースとの Lambda プロキシ統合

API Gateway REST API の AWS_PROXY によって指定される Lambda プロキシ統合は、メソッドリクエストをバックエンドの Lambda 関数と統合するために使用します。この統合タイプでは、API Gateway はデフォルトのマッピングテンプレートを適用してリクエスト全体を Lambda 関数に送信し、Lambda 関数の出力を HTTP レスポンスに変換します。

同様に、Lambda プロキシ統合を /api/{proxy+} のプロキシリソースに適用して単一の統合を設定し、バックエンドの Lambda 関数を /api の下位にある任意の API リソースでの変更に個別に対応させることができます。