4

ファイルのオンラインストレージにはS3を使用しています。コストを削減するために、これらのファイルの多くは、事前にわかっているパスを使用してオンデマンドで生成できます。

S3バケットを取得して、欠落しているオブジェクトリクエストを事前設定されたエンドポイントにリダイレクトすることは可能ですか(ファイルをオンデマンドで生成して提供できます)?

たとえば、http://bucket1.s3.amazonaws.com/path2/file3.jpgへのリクエストは、一時的に(307)をhttp://mydomain.com/missing_s3_obj/bucket1/path2/file3.jpgにリダイレクトします。

4

2 に答える 2

6

S3ドキュメントのウェブサイトホスティング用バケットの設定の例3でRoutingRules説明されているように、S3をドメインにリダイレクトするために使用できます。それはあなたの状況を正確に説明していると思います。

<RoutingRules>
  <RoutingRule>
  <Condition>
    <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
  </Condition>
  <Redirect>
    <HostName>mydomain.com</HostName>
    <ReplaceKeyPrefixWith>missing_s3_obj/bucket1/</ReplaceKeyPrefixWith>
    <HttpRedirectCode>307</HttpRedirectCode>
  </Redirect>
  </RoutingRule>
</RoutingRules>
于 2013-09-08T06:32:42.650 に答える
1

現時点ではこれは不可能ですが、非常に良い考えです。(おそらく、機能リクエストが実際に非常に真剣に受け止められているS3フォーラムに機能リクエストとしてリストする必要があります)。

ただし、別のアーキテクチャ設定を使用して、必要なことを実現できます。

たとえば、S3を使用するのではなく、代わりにCloudfrontを使用します。エッジオリジンは、リクエストを処理する独自のアプリケーションになります。利用可能なすべてのファイルのハッシュをS3に保存する必要がありますが、ファイルがS3で利用可能な場合は、S3にプロキシします。そうでない場合は、ファイルを動的に生成し、それをCloudfrontに提供します。

その後のリクエストで、cachineのすべてのメリットを享受できます。

于 2012-10-22T11:05:00.647 に答える