AWS - URL を API バックエンドにマップする (Apache ProxyPass のような)

AWS - URL を API バックエンドにマップする (Apache ProxyPass のような)

フロントエンドとして Apache、バックエンドとして Nodejs を使用する Web アーキテクチャがあります。このアーキテクチャを AWS に移行したいと考えています。Node.js は Elastic Beanstalk になり、Apache は Amazon S3 に保存されます (静的ファイルのみを保存します)。

これらのディレクティブを使用して、/api URL パスを Apache のバックエンドにマップします。

<Location /api>
    ProxyPass http://localhost:8081/api
</Location>

AWS でも同じメカニズムを使用したいと思います。Amazon S3 は単なるストレージ サービスであるため、これが実行できないことがわかりました。

複数のOriginAmazon CloudFrontを使用できることがわかりました。Origin はバケットまたは です。次に、 を使ってNode.js アプリケーションのバックエンドをホストします。Amazon CloudFrontAmazon S3Amazon Elastic Load BalancersAmazon EC2Amazon Load Balancer

最終的なアーキテクチャは

                        - Amazon Elastic Load Balancer -> Amazon EC2
                 /api  /
                      /
-->Amazon CloudFront-<
                      \
                 else  \
                        - Amazon S3

このタイプのアーキテクチャは可能ですか? 可能であれば、AWS でこのタイプのアーキテクチャを実現する最善の方法ですか?

皆様のご回答ありがとうございました!

答え1

はい... CloudFront を使用してください。

もちろん、その公式の目的はキャッシュ CDN ですが、パスに基づいてリクエストを適切なオリジン システムに選択的にルーティングする機能が組み込まれています。

したがって、デフォルトのパスを S3 に設定し、リクエストがバケットに送信されるようにします。Elastic Beanstalk デプロイメントの前にある Elastic Load Balancer を指す 2 番目のオリジンを設定します。パス パターンを設定して、/api/*この 2 番目のオリジンにリクエストをルーティングします。

必要ない場合や望ましくない場合は、キャッシュ動作を無効にすることができます。

CloudFront のデプロイメントは「ディストリビューション」と呼ばれます。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web.html

これは「最善」のアプローチでしょうか? それはあなたの専門知識と創造性次第です... しかし、利用可能な AWS コンポーネントを使用したい場合は、おそらくこれが最適な方法です。 これは、http 上のパスによるリクエストのルーティングを基本的にメンテナンスフリーで提供する唯一のコンポーネントです。 (もちろん、Amazon API ゲートウェイもパスでルーティングしますが、S3 を「ワイルドカード」の宛先とするこのアプリケーションには適していません。)

関連情報