作 ▸
AWS CloudFormationでオリジンがS3バケットのCloudFrontを作る
覚え書き。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: "画面用バケットにアクセスする用"