Cloudfront的Cloudformation S3存储桶主体

拉宾·马利克(Rabin Mallilck)

我正在尝试为Yaml模板创建S3存储桶上的Cloudfront分发。我对如何添加principal感兴趣BucketPolicy

我想知道如何替换XXXXXXXXXXX将通过部署模板生成的Cloudfront的原则上的CloudFront Origin Access Identity XXXXXXXXXXX。

还有没有一种方法可以在yaml模板上添加html,css同步过程(我现在正在通过aws cli执行此操作)?

请告诉我。TIA

 AWSTemplateFormatVersion: 2010-09-09
 Resources:
   Bucket:
     Type: 'AWS::S3::Bucket'
     Properties:
       BucketName: pridesys.webbucket
       AccessControl: Private 
       WebsiteConfiguration:
         IndexDocument: index.html

   BucketPolicy:
     Type: AWS::S3::BucketPolicy
     Properties:
       Bucket: !Ref Bucket
       PolicyDocument:
         Id: ReportPolicy
         Version: "2012-10-17"
         Statement:
           - Sid: "1"
             Effect: Allow
             Action: "s3:GetObject"
             Principal:
               AWS: "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXXXXX"
             Resource: !Join ['', ['arn:aws:s3:::', !Ref Bucket, '/*']]

   Distro:
     Type: 'AWS::CloudFront::Distribution'
     Properties:
       DistributionConfig:
         Origins:
           - DomainName: !GetAtt Bucket.DomainName
             Id: foo
             S3OriginConfig: {}
          Enabled: True
         DefaultRootObject: index.html
         DefaultCacheBehavior:
           ForwardedValues:
             QueryString: False
           TargetOriginId: foo
           ViewerProtocolPolicy: allow-all
拉宾·马利克(Rabin Mallilck)

非常感谢@Jens !!

您的解决方案对您有很大帮助。尝试部署模板时出现TargetOriginId和ForwarededValues错误。

这就是对我有用的-

AWSTemplateFormatVersion: '2010-09-09'
Description: An AWS Serverless Specification template describing your function.
Resources:
  WebUIBucket:
    Type: AWS::S3::Bucket
  CloudFrontOriginIdentity:
    Type: AWS::CloudFront::CloudFrontOriginAccessIdentity
    Properties:
      CloudFrontOriginAccessIdentityConfig:
    Comment: "origin identity"
  WebUIPolicy:
    Type: AWS::S3::BucketPolicy
    Properties: 
      Bucket:
        Ref: WebUIBucket
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              CanonicalUser:
                Fn::GetAtt: [ CloudFrontOriginIdentity , S3CanonicalUserId ]
            Action: "s3:GetObject"
            Resource: !Sub "${WebUIBucket.Arn}/*"
  WebpageCDN:
    Type: AWS::CloudFront::Distribution
    Properties:
      DistributionConfig:
        Origins:
          - DomainName: !Sub "${WebUIBucket}.s3.amazonaws.com"
            Id: webpage
            S3OriginConfig:
              OriginAccessIdentity: !Sub "origin-access-identity/cloudfront/${CloudFrontOriginIdentity}"
        Enabled: True
        DefaultRootObject: index.html
        DefaultCacheBehavior:
          ForwardedValues:
            QueryString: False
          TargetOriginId: webpage
          ViewerProtocolPolicy: allow-all
Transform: AWS::Serverless-2016-10-31

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

跨区域复制的S3存储桶的CloudFront CDN

S3存储桶的签名CloudFront URL

域-> cloudfront-> s3(https)存储桶

拒绝对S3存储桶的AWS CloudFront访问

AWS Cloudfront重定向到S3存储桶

指向 S3 存储桶和 ELB 的 Cloudfront 分发

CloudFormation模板设置S3存储桶默认加密

使用cloudformation对S3存储桶启用Lambda功能

通过CloudFormation的AWS Lambda S3存储桶通知

无法从CloudFormation Yaml创建多个S3存储桶

如何使用cloudformation更改s3存储桶策略?

AWS Cloudfront - S3 与 CloudFront Origin Access 和 Referer 存储桶策略

如何使用Cloudformation从S3存储桶中的代码创建AWS Codecommit存储库

我想从 Cloudformation 中删除已弃用的 S3 存储桶(具有删除策略的存储桶)

Cloudfront签名的cookie并同时访问s3存储桶中的多个路径

通过AWS CloudFront从单个S3存储桶为SPA多租户提供服务

如果启用了CloudFront,s3存储桶区域真的很重要吗?

如何使CloudFront永不在S3存储桶上缓存index.html

基于S3存储桶的AWS Cloudfront分发,带有跨帐户对象的访问被拒绝

如何在 cloudfront lambda@Edge 函数中访问 S3 存储桶对象?

当源为S3存储桶时,AWS CloudFront返回http 307

S3 / Cloudfront:如何在存储桶中列出文件夹的内容

尽管有CloudFront原始身份访问策略,S3存储桶仍然公开

AWS CloudFront如何遵循S3存储桶重定向规则?

设置默认的缓存控件,并在整个S3存储桶/ CloudFront中到期

不使用Amazon S3存储桶创建Amazon Cloudfront发行版

cloudfront和s3 301重定向显示存储桶的裸域

lambda无法访问受Cloudfront限制的s3存储桶

如何在使用Cloudfront上传的S3存储桶中获取文件?