AWS S3重定向无法正常工作

时间:2016-05-27 17:54:08

标签: amazon-web-services amazon-s3 http-status-code-404 http-status-code-403

我刚在AWS S3中创建了一个新存储桶。我想在那里托管一些静态文件但如果它们不在那里,则重定向到我的主服务器。看似简单,但我没有按照说明操作。

在桶上我已经给了每个人查看权限。

我添加了一个存储桶策略:

{
    "Version": "2012-10-17",
    "Id": "Policy999999999",
    "Statement": [
        {
            "Sid": "Stmt9999999999",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mybucket/*"
        }
    ]
}

在静态网站托管上,我启用了它并创建了简单的index.htm和error.htm页面(不是我需要它们,但万一它是必需的)。然后添加了这些重定向规则:

<RoutingRules>
    <RoutingRule>
        <Condition>
            <HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals>
        </Condition>
        <Redirect>
            <Protocol>http</Protocol>
            <HostName>www.mydomain.com</HostName>
            <ReplaceKeyPrefixWith>/</ReplaceKeyPrefixWith>
        </Redirect>
    </RoutingRule>
</RoutingRules>

(显然你需要403而不是404,如果它没有列表权限但它不适用于403/404的任何变体并且具有列表权限或不具有列表权限)

当我转到不存在的存储桶上的网址(存在的网址很好)时,我得到:

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>9DD57C7132E76D65</RequestId>
<HostId>
I15odykUdMnGCC+hQfb1pfsnt+gkfGVxuD2sy5PrxrX16P8Njpy3yQiLLH30evTkdOOAl28HA9M=
</HostId>
</Error>

(如果列表权限已启用,则为NoSuchKey)

帮助!

1 个答案:

答案 0 :(得分:4)

检查网站托管设置下的控制台,找到您的存储桶的网站端点主机名。

您正在向REST端点主机名发送请求 - 由XML错误消息证明。

http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html

此外,您想要用任何内容替换键前缀,而不是斜杠,或者您最终会有两个斜杠。