AWS 作 ▸ 2020-03-13 19:10 AWS CloudFormationでオリジンがS3バケットのCloudFrontを作る #AWS#CloudFormation 覚え書き。S3バケットを独自ドメインで公開するために作った。 実際に動いた構成をブログ用にまとめたものなので、そのままだと動かないかも。 具体的な設定値を乗せたいので、あまりパラメータに出してない。必要ならパラメータにする。 タグは適当。とりあえず、タグをつけられる箇所だということを示すためにつけてる。 以下の記事を参考にさせていただきました。 CloudFormation で OAI を使った CloudFront + S3 の静的コンテンツ配信インフラを作る | Developers.IO AWSTemplateFormatVersion: "2010-09-09" Transform: AWS::Serverless-2016-10-31 Description: "example" Parameters: ServiceName: Description: "サービス名" Type: String Resources: # CloudFrontディストリビューション MyCloudFrontDistribution: Type: "AWS::CloudFront::Distribution" Properties: DistributionConfig: Enabled: true Origins: # S3をオリジンにする - Id: "S3Origin" DomainName: "xxxxx.s3.amazonaws.com" # バケットのドメイン名 S3OriginConfig: OriginAccessIdentity: !Sub "origin-access-identity/cloudfront/${MyOriginAccessIdentity}" Aliases: # 画面のドメイン名 - "example.com" ViewerCertificate: # 証明書はバージニア北部 (us-east-1) リージョンのものしか使用できないので注意 AcmCertificateArn: "arn:aws:acm:us-east-1:999999999999:certificate/99999999-9999-9999-9999-999999999999" MinimumProtocolVersion: "TLSv1.1_2016" SslSupportMethod: "sni-only" DefaultRootObject: "index.html" # SPAとかで全てのアクセスをindex.htmlに集約したい場合は設定する DefaultCacheBehavior: TargetOriginId: "S3Origin" ViewerProtocolPolicy: "redirect-to-https" ForwardedValues: QueryString: false # キャッシュをさせたくない場合は0を指定 # ※その場合、S3側のオブジェクトのメタデータにも Cache-Control=no-cache が必要なので注意 DefaultTTL: 0 MaxTTL: 0 MinTTL: 0 IPV6Enabled: true Comment: "S3の前に置くCloudFront" Logging: # S3バケットにアクセスログを保存 Bucket: "yyyyy.s3.amazonaws.com" # バケットのドメイン名 Prefix: "cf" # 設定すると、このフォルダ以下にログを保存する Tags: - Key: "Service" Value: !Ref ServiceName # OAI (Object Access Identity) MyOriginAccessIdentity: Type: "AWS::CloudFront::CloudFrontOriginAccessIdentity" Properties: CloudFrontOriginAccessIdentityConfig: Comment: "画面用バケットにアクセスする用"