【问题标题】:Cloudfront Access deniedCloudfront 访问被拒绝
【发布时间】: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 添加

标签: amazon-web-services amazon-cloudformation amazon-cloudfront


【解决方案1】:

我在我的沙盒帐户中部署了您的模板。它按预期工作。存储桶、策略、CF 发行版都很好,我的示例网站可以正常工作。

只要确保您使用 CF 域名从 Internet 访问您的静态网站,而不是存储桶 url,因为我看到有人错误地将存储桶 url 与 CF 一起使用。它的形式为

ddd7asdf234sa.cloudfront.net

【讨论】:

  • 我使用该模板从 CF 和 s3 url 都被拒绝访问。会不会和 S3 文件权限等有关?
  • @Jayp 你修改过它们吗?无论发生什么,这都不是您发布的模板的错。
猜你喜欢
  • 2018-01-16
  • 2013-01-03
  • 2019-08-30
  • 2022-01-11
  • 2020-02-29
  • 2021-07-25
  • 2017-10-03
  • 2021-09-07
  • 1970-01-01
相关资源
最近更新 更多