![](/img/trans.png)
[英]Does static hosting make S3 bucket overwrite “Block public access” settings for bucket?
[英]Should I make my S3 bucket public for static site hosting?
我有一个s3存储桶,该存储桶用于托管可通过cloudfront访问的静态站点。 我希望使用s3 <RoutingRules>
将任何404重定向到请求主机名的根。 为此,我需要将cloudfront来源设置为使用s3“网站端点”。
但是,为了使Cloudfront能够通过“网站终结点”而非“ s3 REST API终结点”访问s3存储桶,我需要显式将存储桶公开,即使用以下策略规则:
{
"Sid": "AllowPublicGetObject",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::dev.ts3.online-test/*"
},
{
"Sid": "AllowPublicListBucket",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::dev.ts3.online-test"
}
一切都很好。 有用。 但是,AWS给了我一个很好的闪亮警告,说:
此存储桶具有公共访问权限。 您已提供对此存储桶的公共访问权限。 我们强烈建议您不要授予对S3存储桶的任何公共访问权限。
所以我想两个问题:
关于警告的第一件事。
列表存储桶视图显示您的存储桶是否可公开访问。 Amazon S3标记存储桶的权限,如下所示:
上市 -
对象可以是公共的– ::
桶和对象不是公共的–: -桶和对象没有任何公共访问权限。
仅此帐户的授权用户–:
因此,由于第一个警告。 以下是AWS针对s3静态网站推荐的政策。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::example-bucket/*"
]
}
]
}
向网站存储桶添加存储桶策略,该策略向所有人授予访问存储桶中对象的权限。 将存储桶配置为网站时,必须使要公开提供的对象可读。 为此,您编写了一个存储桶策略,该策略向每个人授予s3:GetObject权限。 以下示例存储桶策略向所有人授予对示例存储桶存储桶中对象的访问权限。
BTW的公共访问只能是GET ,而不能是其他任何东西,完全允许GET请求在S3上访问您的静态网站。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.