Cloudfront 访问被拒绝
Posted
技术标签:
【中文标题】Cloudfront 访问被拒绝【英文标题】:Cloudfront Access denied 【发布时间】:2021-03-06 09:49:33 【问题描述】:我正在尝试使用 Cloudformation 创建具有 S3 源的 Cloudfront。我想将 S3 对象限制为只能通过 Cloudfront 访问。但是,我使用 S3 直接 url 和 Cloudfront url 都被拒绝访问。
AWSTemplateFormatVersion: "2010-09-09"
Resources:
S3Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
CloudFrontOriginIdentity:
Type: 'AWS::CloudFront::CloudFrontOriginAccessIdentity'
Properties:
CloudFrontOriginAccessIdentityConfig:
Comment: 'origin identity'
BucketPolicy:
Type: 'AWS::S3::BucketPolicy'
Properties:
Bucket: !Ref S3Bucket
PolicyDocument:
Statement:
- Effect: Allow
Principal:
AWS: !Sub 'arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity $CloudFrontOriginIdentity'
Action: 's3:GetObject'
Resource: !Sub 'arn:aws:s3:::$S3Bucket/*'
CloudFrontDistribution:
Type: 'AWS::CloudFront::Distribution'
Properties:
DistributionConfig:
DefaultCacheBehavior:
AllowedMethods:
- GET
- HEAD
- OPTIONS
CachedMethods:
- GET
- HEAD
- OPTIONS
Compress: true
DefaultTTL: 3600
ForwardedValues:
Cookies:
Forward: none
QueryString: false
MaxTTL: 86400
MinTTL: 60
TargetOriginId: s3origin
ViewerProtocolPolicy: 'redirect-to-https'
DefaultRootObject: 'index.html'
Enabled: true
HttpVersion: http2
Origins:
- DomainName: !GetAtt 'S3Bucket.DomainName'
Id: s3origin
S3OriginConfig:
OriginAccessIdentity: !Sub 'origin-access-identity/cloudfront/$CloudFrontOriginIdentity'
在 S3 中,我得到了 index.html,里面只有 Hello。
创建的存储桶策略
"Version": "2008-10-17",
"Statement": [
"Sid": "",
"Effect": "Allow",
"Principal":
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity xxxxxxxxxxxx"
,
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mystack-s3bucket-xxxxxxxxxxx/*"
]
【问题讨论】:
你能发布CFn创建的桶策略吗? @jellycsc 添加 【参考方案1】:我在我的沙盒帐户中部署了您的模板。它按预期工作。存储桶、策略、CF 发行版都很好,我的示例网站可以正常工作。
只要确保您使用 CF 域名从 Internet 访问您的静态网站,而不是存储桶 url,因为我看到有人错误地将存储桶 url 与 CF 一起使用。它的形式为
ddd7asdf234sa.cloudfront.net
【讨论】:
我使用该模板从 CF 和 s3 url 都被拒绝访问。会不会和 S3 文件权限等有关? @Jayp 你修改过它们吗?无论发生什么,这都不是您发布的模板的错。以上是关于Cloudfront 访问被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
Amazon Cloudfront 签名 URL 访问被拒绝问题
带有签名 URL 的 AWS CloudFront:403 访问被拒绝