我们使用S3进行文件的在线存储。为了降低成本,许多文件可以按需生成路径,并按需生成。
是否有可能让S3存储桶将丢失的对象请求重定向到我预先配置的端点(然后可以根据需要生成并提供文件)?
例如,对http://bucket1.s3.amazonaws.com/path2/file3.jpg的请求会暂时重定向(307)到http://mydomain.com/missing_s3_obj/bucket1/path2/file3.jpg。
答案 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优势。