让Amazon S3在缺少对象请求时重定向到我的端点?

时间:2012-05-31 18:25:27

标签: http redirect amazon-s3

我们使用S3进行文件的在线存储。为了降低成本,许多文件可以按需生成路径,并按需生成。

是否有可能让S3存储桶将丢失的对象请求重定向到我预先配置的端点(然后可以根据需要生成并提供文件)?

例如,对http://bucket1.s3.amazonaws.com/path2/file3.jpg的请求会暂时重定向(307)到http://mydomain.com/missing_s3_obj/bucket1/path2/file3.jpg

2 个答案:

答案 0 :(得分:4)

您可以使用RoutingRules将S3重定向到您的域,如S3文档中的Example 3 of Configure a Bucket for Website Hosting所述。我相信它准确地描述了你的情况。

<RoutingRules>
  <RoutingRule>
  <Condition>
    <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
  </Condition>
  <Redirect>
    <HostName>mydomain.com</HostName>
    <ReplaceKeyPrefixWith>missing_s3_obj/bucket1/</ReplaceKeyPrefixWith>
    <HttpRedirectCode>307</HttpRedirectCode>
  </Redirect>
  </RoutingRule>
</RoutingRules>

答案 1 :(得分:0)

目前这是不可能的,尽管这是一个非常好的主意。 (也许您应该将其列为S3论坛上的功能请求,其中功能请求实际上非常认真)。

您可以使用不同的设置来实现您想要的效果。

例如,您可以使用Cloudfront,而不是使用S3。您的边缘起源将是您自己的应用程序提供请求。您必须在S3上存储所有可用文件的哈希值,但如果该文件在S3上可用,则您将代理到S3。如果不是,那么您将动态生成文件并将其提供给Cloudfront。

然后,您可以获得后续请求的所有cachine优势。