2016-04-19 4 views
1

できるだけ早くアプリケーションにイメージをホストしたい。すでにAWSの設定をしているので、イメージをS3バケットでホストする方が好きです(ただし、代替案は公開されています)。ジオロケーションに基づいて1つのドメインをs3バケットに多重化する

問題は、要求を最も近いS3バケットにルーティングすることです。 今、Amazonルート53をジオロケーションルーティングポリシーとともに、それぞれのバケットにリダイレクトするクロースEC2インスタンスに使用します。要求が進むにつれてこれは非効率的です: origin-> DNS-> EC2-> S3そして origin-> DNS-> S3が好ましいでしょう。ジオロケーションに基づいてリクエストがルーティングされる同じドメインに2つの静的ウェブサイトS3バケットをバインドすることは可能ですか?

Ps:私たちはクラウドフロントを見てきましたが、画像の多くは動的で一度しか見られないので、できるだけ原点をユーザーに近づけたいと考えています。

+0

*これは非効率的です*あなたはあまりにも理論的になってきています。あなたは、毎日何時も同じ地域のS3への$ 5 t2.nanoインスタンスプロキシリクエストを介して、1日あたり何十万件ものリクエストを簡単に処理することができます。また、S3とインスタンス間の帯域幅は無料です。このソリューションには何も問題はありません。 –

答えて

0

多くの研究の後、我々はこの問題に対する答えを見いだせなかった。ただし、セットアップを更新しました。このシナリオでは、ユーザーがボタンをクリックし、IOSアプリケーション内のいくつかの画像を表示するというシナリオです。ユーザーがボタンを押したときのリクエストは、パフォーマンスを向上させるために、最も近いEC2インスタンスにジオ・リルートされます。 EUと米国で同じイメージリンクを返すのではなく、米国でクリックするとアメリカのS3バケットにリンクし、ヨーロッパでも同様です。また、速度を上げるために、各S3バケットの前に1つずつ、2つのクラウドフロントディストリビューションを配置します。

4

これはできません。

S3バケットが静的なWebサイトとしてファイルを提供するためには、バケット名はブラウズ中のドメインと一致する必要があります。この制限により、異なる地域でも同じ名前のバケットを複数作成できないため、複数のバケットに同じドメインのファイルを提供することはできません。

CloudFrontはS3バケットからファイルを提供するために使用でき、それらのS3バケットは名前がドメインと一致する必要はありません。一見すると、これは回避策になる可能性があります。ただし、CloudFrontでは、同じドメインに対して複数のディストリビューションを作成することはできません。

残念ながら、この記事の執筆時点では、S3バケットからの地理位置特定は不可能です。より深い説明のための

編集:あなたのドメインのDNSエントリがCNAMEレコード、またはエイリアスであるかどうか

は無関係です。制限はS3側であり、DNSとは関係ありません。

CNAMEレコードでexample.coms3.amazonaws.comx.x.x.xが解決され、S3に接続されます。しかし、あなたのブラウザはまだをHostヘッダーに送ります。

S3がWebページ用のファイルを処理する場合、S3はHTTP要求内のHostヘッダーを使用して、ファイルをどのバケットから配信するかを決定します。これは、S3用の単一のHTTPエンドポイントが存在するためです。したがって、自分のWebサーバーが同じサーバーから複数のWebサイトをホストしている場合と同様に、Hostヘッダーを使用して、実際にどのWebサイトが必要かを判断します。

S3には、Hostが必要になると、利用可能なバケットと比較されます。バケット名はHostヘッダーと照合するために使用されることになりました。

+0

確かに、ドメイン名と一致するバケット名の良い点 – Tom

+0

ALIASではなくCNAMEをS3バケットに使用し、すべてのCNAMEをジオロケーションすると、どのように動作しますか? – Tom

+0

同じ問題があります。 'example.com'と呼ばれるS3バケットだけが' example.com'ドメイン用のファイルを扱うことができます。また、グローバルに1つの 'example.com'バケットしか存在できません。 –

関連する問題