AWSTemplateFormatVersion: "2010-09-09" Description: S3 and CloudFront for Static website hosting Metadata: "AWS::CloudFormation::Interface": ParameterGroups: - Label: default: "S3 and CooudFront Configuration" Parameters: - WebsiteDomainName - CFSSLCertificateId ParameterLables: WebsiteDomainName: default: "WebsiteDomainName" CFSSLCertificateId: default: "CFSSLCertificateId" # ------------------------------------------------------------# # Input Parameters # ------------------------------------------------------------# Parameters: WebsiteDomainName: Type: String CFSSLCertificateId: Type: String Resources: # ------------------------------------------------------------# # S3 Bucket # ------------------------------------------------------------# # Bucket Bucket: Type: "AWS::S3::Bucket" Properties: BucketName: !Ref WebsiteDomainName AccessControl: PublicRead WebsiteConfiguration: IndexDocument: index.html BucketPolicy: Type: "AWS::S3::BucketPolicy" Properties: Bucket: !Ref Bucket PolicyDocument: Statement: - Action: "s3:GetObject" Effect: Allow Resource: !Sub "arn:aws:s3:::${Bucket}/*" Principal: '*' # ------------------------------------------------------------# # CloudFront # ------------------------------------------------------------# CloudFrontDistribution: Type: "AWS::CloudFront::Distribution" Properties: DistributionConfig: PriceClass: PriceClass_All Aliases: - !Ref WebsiteDomainName Origins: - CustomOriginConfig: OriginProtocolPolicy: http-only DomainName: !Sub "${WebsiteDomainName}.s3-website-${AWS::Region}.amazonaws.com" Id: !Sub "S3-Website-${WebsiteDomainName}.s3-website-ap-northeast-1.amazonaws.com" DefaultCacheBehavior: TargetOriginId: !Sub "S3-Website-${WebsiteDomainName}.s3-website-ap-northeast-1.amazonaws.com" ViewerProtocolPolicy: redirect-to-https AllowedMethods: - GET - HEAD CachedMethods: - GET - HEAD DefaultTTL: 3600 MaxTTL: 86400 MinTTL: 60 Compress: true ForwardedValues: Cookies: Forward: none QueryString: false ViewerCertificate: SslSupportMethod: sni-only MinimumProtocolVersion: TLSv1.1_2016 AcmCertificateArn: !Sub "arn:aws:acm:us-east-1:${AWS::AccountId}:certificate/${CFSSLCertificateId}" HttpVersion: http2 Enabled: true # ------------------------------------------------------------# # Output Parameters # ------------------------------------------------------------# Outputs: #WebsiteURL: WebsiteURL: Value: !GetAtt Bucket.WebsiteURL #DistributionID DistributionID: Value: !Ref CloudFrontDistribution #DomainName DomainName: Value: !GetAtt CloudFrontDistribution.DomainName
なるほど、これはやばいわ