AWS
CloudFront

cloudfrontの設定項目(少しかみ砕いて書いてみました)

自分が触ったところだけですがメモします。主に署名URL周りです。
触ってみて理解が少し進んでいるところは自分なりの言葉でかみ砕いて書いています。
よくわからず情報もない部分は書籍や管理画面の英語解説を
google翻訳でほぼそのままな部分もあります。
cloudfrontって何?という方は最下部に簡単な解説を書いています。

General

設定項目 解説
Price Class エッジロケーションを指定して低価格の地域のみを指定したりできる
AWS WAF Web ACL WAFを設定している場合はここで指定することができる
Alternate Domain Names(CNAMEs) 独自ドメインでcloudfront経由でアクセスしたい時に設定。ワイルドカード設定も可能
SSL Certificate 独自ドメインを使用する場合はCustomを選択しドメインを設定する。
Custom SSL Client Support 古いブラウザなどの特殊な環境にも対応するか。All Clientsを選択すると約6万円/月かかる。通常はOnly Clients that Support Server Name Indication (SNI)で大丈夫。
Security Policy CloudFrontでHTTPS接続に使用するセキュリティポリシーを選択します。カスタムSSL証明書とSNIを使用する場合は、TLSv1以降を使用する必要があります。ユーザーがTLSv1.1以降をサポートしていないブラウザまたはデバイスを使用している場合を除き、TLSv1.1_2016を指定することをお勧めします。カスタムSSL証明書と専用IPアドレスを使用する場合は、TLSv1を使用することをお勧めします。
Supported HTTP Versions HTTP2に対応するかしないか
Default Root Object ルートにアクセスがあった時に返すファイルを指定
Logging ログをとるかどうか
Bucket for Logs ログの保存先のs3バケットを指定
Log Prefix ログにつける接頭子
Cookie Logging ログにCookieを含めるかどうか
Enable IPv6 IPアドレスの新しい規格Ipv6を使用するかどうか。署名付きURL、Cookieを使用する際はオフにする
Distribution State cloudfrontのディストリビューション設定が完了した時点で自動的に有効にするかどうか。

Origin Settings

オリジンに関する設定。
cloudfront経由のみのアクセスを許可し、オリジンへの直接のアクセスを遮断みたいなこともここで設定できます。

設定項目 解説
Origin Domain Name オリジンの名前を入れます。
・EC2のパブリックDNS
・beanstalkのロードバランサ
・s3バケット
などキャッシュしたいデータが入っている場所のURLを設定します。
途中まで入力すると候補が出る場合もあります
Origin Path ここにパスを設定するとそのパス以下のものに限定してデータをキャッシュをすることができる。設定なしではオリジン全体をキャッシュする。設定する際は/から始め、最後には/を含めない。
Origin ID 自動で設定されるID
Restrict Bucket Access Yesでオリジンに直接アクセスできなくなります。cloudfront経由のみアクセス可の状態に
Origin Access Identity s3にアクセスするためのIDのようなイメージ。まだ作成していなければCreate a New Identityで作成。cloudfrontコンソール画面の最初の画面左メニューの下側からも設定できる。このIdentityをs3バケットポリシーに書き込むことでアクセスの許可を与える。
Grant Read Permissions on Bucket 上記設定した内容でs3バケットポリシーに書き込むかの確認。自分の使った感じだと追記される?形だと思います。あっでもバックアップ必須です。
Origin Custom Headers おそらくいわゆるHTTPリクエストヘッダに好きなものを設定できて、オリジンに渡し、ごねごねできるっぽい
Origin Protocol Policy cloudfrontからオリジンへのアクセスプロトコルをここで指定できる。例えばhttpを選択すると、httpsでroute53からアクセスが来ても、cloudfrontからオリジンへのアクセスはhttpを使用するような設定となる。CloudFrontへのHTTPによるリクエストはHTTPSにリダイレクトされる。

Behaviors

ここでファイルごとだったりディレクトリごとだったり好きにキャッシュ時間を設定したり、署名URL発行したりできる項目。例えば管理画面ディレクトリは動的に動いているからキャッシュ無しでとか、jpgは長期間キャッシュとかができる。

設定項目 解説
Path Pattern キャッシュしたいファイル名だったりディレクトリだったりを指定。ワイルドカードも使用可能。初期*の設定が必須っぽいのでまずはベースの設定をしてその後にファイルごとに好きに追加していく感じ。
origin 上記path patternが存在するオリジンを設定
Viewer Protocol Policy HTTPとHTTPS両方にアクセスできる
HTTPをHTTPSにリダイレクトにする
HTTPSのみアクセスさせる
の選択
Allowed HTTP Methods 許可するHTTPメソッド多くの場合は[GET,HEAD]を設定。WEBDAVなどデータをアップする際などは[GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
]
Field-level Encryption Config フィールドレベルの暗号化設定とのこと
Cached HTTP Methods HTTPメソッドのキャッシュ設定
Cache Based on Selected Request Headers リクエストヘッダをキャッシュするかという設定。キャッシュ無し、whitelistでキャッシュする、すべてキャッシュするから選ぶことができる。
Object Caching キャッシュする時間をここで設定するか、オリジンで設定するか。最低何秒、最高何秒、通常何秒キャッシュするかを設定できる。
Forward Cookies クライアントから届いたクッキーをオリジンに転送するかどうか。特殊な用途以外はnone
Query String Forwarding and Caching クライアントから届いたクエリ文字列をオリジンに転送するかどうか
Smooth Streaming オンデマンド配信で「Microsoft Smooth Streaming」を利用しているときはYes
Restrict Viewer Access(Use Signed URLs orSigned Cookies) 署名URLを使用するかどうか
Compress Objects Automatically クライアントがAccept-Encoding: gzipを送信してきてgzip圧縮をサポートしているときは自動的にデータをgzipで圧縮して返すかどうかを指定する。yesは圧縮。

そもそもcloudfrontとは

最後に少し解説を書いておきます。
cloudfrontとはamazonが提供するCDNです。
サイトの高速表示、DDos対策、ワンタイムURLの発行
指定した国からのアクセスをはじく(ブラックリスト、ホワイトリスト)など様々な機能があります。

まずDistributionというものを設定します。
Create Distributionというところから作成をしていきます。
通常用途であれば一つのサイト、プロジェクトに1つのディストリビューションを設定することになります。
1つのディストリビューションにEC2とs3など複数のオリジンを設定することも可能です。
前述の設定項目はその設定項目ですが最初に設定を始めるときは順番が違いますのでご注意ください。設定後の設定画面の順番で書いていきます。
(設定する項目によって項目自体が非表示になったりするので注意)

キャッシュヒット率がビヘイビアごとに確認できます

左メニューのPopular object reportからビヘイビアごとのキャッシュヒット率を確認することができるので
定期的に確認してビヘイビアのTTL設定をうまく調整すると高速化につなげることができる。

ディストリビューションの情報をCLIで取得できます。

cloudfrontのIDに割り当てられているkey情報などはコンソールから確認できない?
みたいなのでCLIで取得しました。
※keyが一つなら認証情報見ればいいと思います。

aws cloudfront get-distribution --id XXXXXXXX

以下のようなエラーが出たら

AWS CLI support for this service is only available in a preview stage.

However, if you'd like to use the "aws cloudfront" commands with the
AWS CLI, you can enable this service by adding the following to your CLI
config file:

    [preview]
    cloudfront=true

or by running:

    aws configure set preview.cloudfront true

提示されている以下のコマンドを実行すると解消されます。

aws configure set preview.cloudfront true

↑このコマンドでCLIのconfigファイルが更新され以下の部分が追記されました。

[preview]
cloudfront = true

falseにするには以下でいけました。

aws configure set preview.cloudfront true

私の環境の場合

[preview]
cloudfront = true

がそもそもなかったのでvimで削除しました。