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

您可以使用RoutingRulesS3 重定向到您的域,如S3 文档中为网站托管配置存储桶的示例 3 中所述。我相信它准确地描述了你的情况。

<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 论坛上将其列为功能请求,其中实际上非常重视功能请求)。

不过,您可以使用不同的架构设置来实现您想要的。

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

然后,您将在后续请求中获得缓存的所有好处。

于 2012-10-22T11:05:00.647 回答