AWS S3 重定向不起作用

Posted

技术标签:

【中文标题】AWS S3 重定向不起作用【英文标题】:AWS S3 redirect not working 【发布时间】:2016-09-26 03:45:57 【问题描述】:

我刚刚在 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)

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

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

(如果列表权限打开,则为 NoSuchKey)

救命!

【问题讨论】:

【参考方案1】:

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

您正在向 REST 端点主机名发送请求——正如 XML 错误消息所证明的那样。

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

此外,您需要将键前缀替换为任何内容,而不是斜杠,否则您将得到两个斜杠。

【讨论】:

非常感谢,我的团队花了 3 天时间来了解为什么这不起作用。那里提供的 URL 正确重定向。虽然这会使解决方案变得无用,但这会给我的团队一些关闭。非常感谢。

以上是关于AWS S3 重定向不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用 Name.Com DNS 设置 AWS Beanstalk - URL 重定向不起作用

AWS 负载均衡器将 www.example.com 重定向到 example.com 不起作用

Angular 11 路由在 AWS S3 和 Cloudfront 中不起作用

AWS S3+Cloudfront 静态网站子目录不起作用

通过云端的 https 和 AWS 的 S3 存储桶不起作用

为啥这个重定向不起作用?