2016-07-08 5 views
1

これは興味深い/奇妙な要求のように見えるかもしれませんが、APIレイヤーのブートストラップ/ルートマネージャーとして機能するためにAPIゲートウェイにすべての要求に応答する方法があるかどうかは疑問でした?基本的にはすべてのリクエストです。/getUser、/ getLocation、/ getManagerは1つのAPIゲートウェイエンドポイントルールとして記述できますか?APIゲートウェイ経由ですべての着信要求をブートストラップする

ここには、APIのパスに関係なくすべてのGETリクエストがリクエストを解析し、適切なデリゲート関数を呼び出すLambda関数にルーティングされるという考えがあります。

同様のルールがPOST、DELETE、およびPUTに設定されます。したがって、基本的にAPIゲートウェイは4-5の登録ポイントしか持たず、すべて同じラムダ関数にマップされます。

私はゲートウェイの使用方法に関するさまざまなパターンやアプローチについていくつかの初期の調査を行っており、このようなことを考慮に入れることが可能かどうか疑問に思っていました。これには長所と短所がありますが、この方法でスクリプト化できるかどうかを知りたいだけです。

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

+0

この機能はリバースプロキシと何らかの形で似ていませんか? –

+0

現在、API Gatewayはこれをサポートしていません。 AWSチームに連絡して機能リクエストを送信してください。 –

答えて

1

APIゲートウェイでリクエストパスパラメータを使用できます。

あなたはこれらのもののようないくつかのエンドポイントを作成することができます。

GET /{param1} 
GET /{param1}/{param2} 
GET /{param1}/{param2}/{param3} 

これらのエンドポイントは、3つのパスパラメータまで持っているものは何でもURL一致している必要があります。同じラムダを呼び出すように設定できます。統合要求構成で

、私たちは(私たちは、身体からのデータを追加するクエリ文字列とあまりにヘッダー可能性が...)マッピングテンプレートのために、このようなものを使用することができますことは:

{ 
    "endpoint": { 
    "path": "/$input.params('param1')/$input.params('param2')/$input.params('param3')", 
    "method": "$context.httpMethod" 
    } 
} 

次にラムダでイベントでは、HTTPメソッドとリソースパスを知り、コードの適切な部分を実行することができます。

利点より頻繁に使用同じラムダになり、その平均パフォーマンスを改善するだろう。実際に、ラムダへの連続呼び出しを行う場合は、chances are that AWS re-use the same container to execute itと "ウォームアップ"する必要はありません。同じラムダを頻繁に使用すると、実行頻度に応じて「ウォームアップ」の割合を減らす必要があります。

欠点緩い「microservice」アスペクトすべてのアプリケーションが唯一のラムダに埋め込むことになるので、ラムダを使用してのにあります。もちろん、もう一つの欠点は、のコードルーティングルールを実行し、ラムダでそれらを実行することです。

+0

洞察に感謝します!私たちが特に使用するためには、ルーティングの問題を簡単に緩和することができます。はい、マイクロサービスのコンセプトから取り除きます。そのため、ロギングの実行可能性が低下するb/cでは、すべての着信要求がCloudWatchによって同じように扱われます。それは面白いオプションだけど。 – ddibiase

関連する問題