AWS 作 ▸ 2020-03-13 19:10 AWS CloudFormationでオリジンがAPI GatewayのCloudFrontを作る #AWS#CloudFormation#API Gateway 覚え書き。エンドポイントタイプがリージョンのAPI Gatewayを、IPv6に対応させるために作った。 実際に動いた構成をブログ用にまとめたものなので、そのままだと動かないかも。 具体的な設定値を乗せたいので、あまりパラメータに出してない。必要ならパラメータにする。 タグは適当。とりあえず、タグをつけられる箇所だということを示すためにつけてる。 公式マニュアルは以下。 AWS::CloudFront::Distribution AWSTemplateFormatVersion: "2010-09-09" Transform: AWS::Serverless-2016-10-31 Description: "example" Parameters: ServiceName: Description: "サービス名" Type: String Resources: MyCloudFrontDistribution: Type: AWS::CloudFront::Distribution Properties: DistributionConfig: Enabled: true Origins: # API Gatewayをオリジンにする - Id: "ApiGatewayOrigin" DomainName: "xxxxx.execute-api.ap-northeast-1.amazonaws.com" # API Gatewayのドメイン名 OriginPath: "/v1" # ステージ名 (ここではv1) をAPIのURLに含めたくない場合は指定する CustomOriginConfig: OriginProtocolPolicy: "https-only" Aliases: # APIのドメイン名 - "api.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" DefaultCacheBehavior: TargetOriginId: "ApiGatewayOrigin" ViewerProtocolPolicy: "redirect-to-https" ForwardedValues: # クエリストリングをフォワードさせる。GETのAPIがある場合は必ずtrueにする QueryString: true AllowedMethods: # リストで指定してるけど実際に可能な組み合わせは3通りしかない (公式マニュアル参照) # POSTを利用したければ、実際には使わなかろうと以下全て指定する必要あり - "GET" - "HEAD" - "OPTIONS" - "PUT" - "PATCH" - "POST" - "DELETE" # キャッシュを無効化する (しないとGETの戻りがキャッシュされる) DefaultTTL: 0 MaxTTL: 0 MinTTL: 0 IPV6Enabled: true Comment: "API Gatewayの前に置くCloudFront" Logging: # S3バケットにアクセスログを保存 Bucket: "xxxxx.s3.amazonaws.com" # バケットのドメイン名 Prefix: "cf" # 設定すると、このフォルダ以下にログを保存する Tags: - Key: "Service" Value: !Ref ServiceName