AWS サービスでは、S3 バケットから Web アプリケーションを実行し、ロード バランサー (EC2 インスタンスで実行される Node.js アプリケーションのセット) から REST API を介してデータにアクセスします。
現在、次のように URL を指定しています。
- API ロード バランサー: api. somedomain.com
- S3 上の静的 Web アプリ: somedomain.com
しかし、この設定ではリクエストが CORS であるため、一連の問題が発生しました。特別なヘッダーを使用して CORS を回避できますが、すべてのブラウザーで機能するとは限りません。
私たちが達成したいのは、同じドメインで異なるパスを使用して API を実行することです。
- API ロード バランサー: somedomain.com /api
- S3 上の静的 Web アプリ: somedomain.com
アイデアの 1 つは、API ロード バランサーを CDN にアタッチし、クエリが「/api/*」パスで送信された場合にすべてのリクエストをロード バランサーに転送することでした。しかし、私たちの API は HEAD および GET リクエストだけでなく、POST、PUT、DELETE も使用しているため、これは機能しません。
もう 1 つのアイデアは、S3 バケットの代わりに 2 番目の EC2 インスタンスを使用して Web サイトをホストすることです (nginx や apache などの Web サーバーを使用)。しかし、すべてが既に整っている場合 (S3 静的コンテンツ ホスティング)、オーバーヘッドが大きすぎます。また、このシナリオを使用すると、Amazon CloudFront のパフォーマンスのすべてのメリットが得られません。
では、Load Balancer と S3 を組み合わせて、同じドメインで異なるパスで実行する方法をお勧めできますか? ( somedomain.com /apiの API とsomedomain.comの Web アプリ)
ありがとうございました!