最佳答案
我试图安装 CloudFront
,以服务静态文件托管在我的 S3
桶。我有设置分布,但我得到 AccessDenied
时,试图浏览到 CSS (/CSS/stlyle.css
)文件内的 S3桶:
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>E193C9CDF4319589</RequestId>
<HostId>
xbU85maj87/jukYihXnADjXoa4j2AMLFx7t08vtWZ9SRVmU1Ijq6ry2RDAh4G1IGPIeZG9IbFZg=
</HostId>
</Error>
我已经将 CloudFront 发行版设置为 S3存储桶,并创建了新的 Origin Access Identity policy
,它是自动添加到 S3存储桶的:
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E21XQ8NAGWMBQQ"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::myhost.com.cdn/*"
}
]
}
我错过什么了吗?
我希望我在这个 S3桶中的所有文件都通过 CloudFront 提供..。
最新消息
向导说:
默认情况下,Amazon S3 bucket 和其中的所有对象都是私有的,只有创建 bucket 的 AWS 帐户有权读写其中的对象。如果希望允许任何人使用 CloudFront URL 访问 Amazon S3桶中的对象,则必须向对象授予公共读取权限。(这是使用 CloudFront 和 Amazon S3时最常见的错误之一。您必须显式地向 AmazonS3桶中的每个对象授予特权。)
因此,在此基础上,我为 Everyone Read/Download
中的 S3 bucket 中的所有对象添加了新的权限。现在我可以访问文件了。
但是现在当我访问像 https://d3u61axijg36on.cloudfront.net/css/style.css
这样的文件时,它被重定向到 S3URI 和 HTTP
。我要怎么解除这个?