.png)
フロントエンドとして 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 CloudFront
Amazon S3
Amazon Elastic Load Balancers
Amazon EC2
Amazon 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 を「ワイルドカード」の宛先とするこのアプリケーションには適していません。)