2016-05-17 13 views
2

APIゲートウェイでいくつかの基本ルーティングを変更しようとしています。 私は次のシナリオを実現する必要があります。APIゲートウェイをuri(リクエストパス+変数クエリパラメータ)パススルーでhttpプロキシとして使用

  • ユーザーは、要求がAPI1 /a/b/../nをxxxx-execute-api.eu-west-1.amazonaws.com/prod/のでしょうか? PARAM1 = VAL1 & parma2 = val2の... & paramNの= VALN要求はAPI1に行くべき .back.end/A/B /../ N?のparam1 = val1と& parma2 = val2の... & paramNの=のVirtual Local Area Network

  • ユーザーが作成するxxxx-execute-api.eu-west-1.amazonaws.com/prod/ api2 /a/b/../n?param1=val1 & parma2 = val2 ... & paramn = valnリクエストはに行きます。api2 .back.end/a/b /../ n?param1 = val1 & parma2 = val2 ... & paramn = valn

  • ユーザーが作成したものです。xxxx-execute-api.eu-west-1.amazonaws.com/prod/*****/a/b/../n ?のparam1 = val1と& parma2 = val2の... & paramNの= VALN要求はAPI3に行くべき .back.end/A/B /../ N?のparam1 = val1と& parma2 = val2の... & paramNの= VALN

ルーティングは、ステージの後の最初のパスインデックスに基づいて行われる必要があり、それ以降のすべてはhttpバックエンド(透過プロキシなど)に渡されます。すなわち

、経路インデックス1はAPI1、経路インデックス1後に完全なURIを持つAPI1 .back.endに転送要求である場合、パスインデックス1がapi2の場合は、パスインデックス1のあと完全なURIを持つapi2 .back.endに転送リクエストします。パスインデックス1がならば、明示的な値api1またはapi2よりも、転送要求がapi3 .back.endになり、パスインデックス1の後に完全なURIが付きます。

これを実現するには、余分なレイヤー(ラムダ、クラウドフロント、EC2など)を追加しないでください。

ありがとうございました!

答えて

2

APIゲートウェイは、このユースケースを今日サポートしていません。各メソッドとパスをAPI定義で明示的に定義する必要があります。

このようなパススループロキシをサポートすることは、他の顧客から聞いた要求であり、将来のサービスの更新でサポートすることを検討する可能性があります。

更新日09/20/2016:上記のようにリクエストをプロキシできるようにする機能が追加されました。詳細についてはannouncementをご覧ください。

+0

理想的ではありませんが、ラムダでこのルーティング/リダイレクトを実行できますか?おそらくリダイレ​​クトを返すか、ターゲットサーバにコールをプロキシするかのいずれかでしょうか? – ericpeters0n

+0

@ ericpeters0n APIゲートウェイは、依然として変数または "greedy"リソースパスをサポートする必要があります。現在、APIゲートウェイ定義内のすべてのリソース/メソッドを定義し、これを統合(例:ラムダ)にマッピングする必要があります。 –

関連する問題