【发布时间】:2019-04-23 09:06:45
【问题描述】:
我正在尝试使用 CloudFront 从 S3 存储桶交付静态资产。正如我最初发现的那样,存储桶是公共的,并且具有以下公共访问设置:
这是我最初遇到的存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<BUCKET_NAME>/*"
},
{
"Sid": "2",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E3KB5KQ622F9F3"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<BUCKET_NAME>/*"
}]
}
现在这就是我所做的:
- 通过创建新的源访问身份创建了具有适当源域名和限制存储桶访问的新 CloudFront 分配。
- 根据doc examples 更新了 S3 存储桶策略,以限制对规范用户 ID 的访问。更新后的政策如下所示:
- 将 S3 存储桶的所有公共访问设置设置为 true 以使其成为私有。
每当我尝试通过创建的 CDN 访问静态资源时,都会遭到拒绝访问。在提到 AWS documentation 限制通过 CloudFront 访问 S3 存储桶时,我特别困惑他们希望开发人员按照以下说明做什么:
"To specify an origin access identity, use the value of Amazon S3 Canonical User ID
on the Origin Access Identity page in the CloudFront console."
【问题讨论】:
-
错误信息是否可能被 Cloudfront 缓存了?
标签: amazon-web-services amazon-s3 amazon-cloudfront