web-dev-qa-db-ja.com

AWSは、ディレクトリパスに基づいて2つの異なるEC2インスタンスにHTTPSトラフィックをルーティングする方法を提供していますか?

AWSのサービスで次のことが可能かどうか疑問に思っていましたか?

https://www.example.com/a/->EC2インスタンスAでApacheによって提供されます

https://www.example.com/b/->EC2インスタンスBでApacheによって提供されます

明確にするために、1つのディレクトリパスの下にあるファイルを、他のディレクトリパスの下にあるファイルと同じサーバーインスタンスに配置したくありません。

これはある種のプロキシで可能かもしれないことを理解していますが、AWS製品の1つでより簡単なソリューションがあります。

EC2ロードバランサーでは、ディレクトリパスに基づく切り替えが許可されていないようです。 Route 53はDNSレベルで機能します。DNSレベルには、それに基づいてIPを返すためのパス情報がありません。

10
Joseph Shih

AWS Application Load Balancer を使用します Path Based Routing を実行します。その2番目のリンクは、それを行う方法のチュートリアルです。

簡単に言うと、ALBを通常どおりセットアップし、次の手順に従います(AWSチュートリアルからコピー)。

  • Listenersタブで、矢印を使用してリスナーのルールを表示し、Add rule。ルールを次のように指定します。

  • ターゲットグループ名には、作成した2番目のターゲットグループを選択します。

  • Path patternの場合、パスベースのルーティングに使用する正確なパターンを指定します(たとえば、/ img/*)。詳細については、「リスナールール」を参照してください。

  • 保存を選択します。

29
Tim

Timの優れた答えに加えて、 CloudFront でもこれを実現できます。

最初に ディストリビューションを作成 、EC2インスタンスAとEC2インスタンスB(ロードバランサー、非AWSホスト、またはS3バケットの場合もある)のオリジンを追加します。

次に、セットアップ キャッシュ動作ルール を使用して、/ a/*および/ b/*を適切なオリジンにマッピングします。

この目的でCloudFrontを使用することが理にかなっているかどうかは、アプリケーションとCDNの必要性によって異なります。

9
Zach Lipton