具有通配符条件的AWS S3 RoutingRule

Jas*_*nga 13 amazon-s3 amazon-web-services

我有一组用户文件夹具有相同的文件夹结构,但内容不同,存储在S3中.

/user/userA/application/folder/structure/file.xml
/user/userB/application/folder/structure/file.xml
Run Code Online (Sandbox Code Playgroud)

如果该用户尚不存在s3文件夹结构,我想将用户重定向到后备文件夹(带有后备内容).

/user-fallback/application/folder/structure/file.xml
Run Code Online (Sandbox Code Playgroud)

我试图在我的重定向规则中添加一个通配符参数,但是S3 *作为文字读取

<RoutingRules>
    <RoutingRule>
        <Condition>
            <KeyPrefixEquals>user/*/</KeyPrefixEquals>
            <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
        </Condition>
        <Redirect>
            <ReplaceKeyPrefixWith>user-fallback/</ReplaceKeyPrefixWith>
        </Redirect>
    </RoutingRule>
</RoutingRules>
Run Code Online (Sandbox Code Playgroud)

因此,只有开头的网址/user/*/才能正确地重定向到user-fallback文件夹结构.

我有超过20个用户,因此创建单独的RoutingRules也不起作用(S3具有路由规则限制)

有任何想法吗?

小智 1

路由规则不允许使用通配符——但是您不能为任何 404 错误添加自定义重定向吗?请参阅此处的示例#2: 示例 2:将对已删除文件夹的请求重定向到页面 只需将条件更改为:

<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>

那行得通吗?