【发布时间】:2017-07-04 06:05:07
【问题描述】:
我正在尝试设置 CloudFront 以提供托管在我的 S3 存储桶中的静态文件。我有设置分发,但在尝试浏览到 S3 存储桶内的 CSS (/CSS/stlyle.css) 文件时得到AccessDenied:
<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/*"
}
]
}
我错过了什么吗?
我希望通过 CloudFront 提供此 S3 存储桶中的所有文件...
*** 更新 ***
这个云锋guide 说:
默认情况下,您的 Amazon S3 存储桶和其中的所有对象都是私有的——只有创建存储桶的 AWS 账户有权读取或写入其中的对象。如果您想允许任何人使用 CloudFront URL 访问您的 Amazon S3 存储桶中的对象,您必须授予对象的公共读取权限。 (这是使用 CloudFront 和 Amazon S3 时最常见的错误之一。您必须明确授予 Amazon S3 存储桶中的每个对象的权限。)
因此,基于此,我已将 S3 存储桶内的所有对象的新权限添加到 Everyone Read/Download。现在我可以访问文件了。
但是现在当我访问像 https://d3u61axijg36on.cloudfront.net/css/style.css 这样的文件时,它被重定向到 S3 URI 和 HTTP。如何禁用此功能?
【问题讨论】:
-
我自己也遇到过这个话题。还在等着看是不是这样……
标签: amazon-web-services amazon-s3 amazon-cloudfront