私はプロジェクトに取り組んでいます。ここでは、ブラウザから最も近いS3領域を選択する必要があります。フランクフルト地域では、すべてのS3地域のトークンを渡すことができるAPIは1つしかありません。私はレイテンシーベースのルート(Route53)をもう使用できません。なぜなら、いつも同じEC2インスタンスに終わるからです。クライアント側スクリプトから最も近いAWS領域を見つけよう
私は、次のオプションを考えています
Pingの適用可能なすべての領域(DynamoDBのエンドポイントへのpingはかなり速いです)と最速の応答を選択します。ヒックアップを避けるために、エンドポイントを3回pingすることができました。問題は、一時的なヒックアップが遠くにあるかもしれないS3ポイントを選択することです。
該当するすべての地域で独自の地域で応答するt1.microサーバーをインストールします。最速のEC2インスタンスにアクセスするために、待ち時間ベースのルートが使用されます。これはうまくいくはずです(これまではうまくいきました)が、私は24/7 EC2のインスタンスを必要とします。この目標だけではあまりにも高価です。
オプション2と同じですが、専用のEC2インスタンスではなく、独自の領域を返すmocked APIゲートウェイを使用します。問題は、APIゲートウェイがまだすべての地域(サンパウロ)で利用可能ではないということです。
単一のt1.microインスタンスを使用し、各領域に弾性IPを追加します。 NGINXはIPアドレスをリッスンし、各アドレスの別の領域を返すように設定できます。 Route53は、各IPアドレスに解決されるレイテンシベースのルートを持つように設定する必要があります。そうすれば、私は1つのインスタンスだけを使うことができますが、必要な結果を得るためにいくつかの弾力的なIPを使うことができます。
残念ながら、私はDNSをブラウザ内からIPアドレスに解決できません。さもなければ、架空のIPアドレスにルーティングする複数の待ち時間に基づくルートを作成することができました。単にホスト名を解決すれば私にIPアドレスが与えられ、それが表す地域を教えてくれるでしょう。
AWSが最も高速な領域を決定するためにクライアントによって使用されるエンドポイントを提供するなら、それはうまくいくでしょう。誰もがスケールで動作し、あまりにも多くの費用がかからない別のスマートなソリューションを持っていますか?
EC2でこれを行う設定を使用するために私に支払うことができます。 :)しかし、これらは興味深いアイデアですが、API Gatewayを使用する際のもう1つの問題(CloudFrontに関連した私のオリジナルの試みのもう1つの問題)は、複数のリージョンを同じホスト名に対応するように構成できないことです。 API Gatewayは、グローバルなCloudFrontの後ろに位置しています。次の[Lambda @ Edge](https://aws.amazon.com/blogs/aws/coming-soon-lambda-at-the-edge/)サービス*が解決策を提供するかもしれません。直感は、ラムダコンポーネントがAWS地域のAZの中で動くかもしれないと推測している。 –