あきろぐ

いろいろめもするよ🐈🐈🐈

CloudFrontを使う

AWS勉強ログ。今回は、CloudFrontです。

CloudFrontとは

  • HTMLファイルやCSS、画像や動画などの静的コンテンツをキャッシュして、オリジンサーバーの代わりに配信するCDN(Contents Delivery Network)サービス
  • AWSは世界中にエッジロケーションが120あり、利用者から一番近いエッジロケーションからコンテンツを高速で配信することが可能
  • CloudFrontがコンテンツをキャッシュすることで、オリジンサーバーの負荷を軽減させることができる

バックエンド

  • バックエンド(オリジンサーバー)としてELB、EC2、S3の静的ホスティングを利用することが可能
  • オンプレミスのサーバーも指定することができる
  • 複数のオリジンサーバーを1つのCloudFrontに指定することができ、拡張子別やURLパスによって振り分けられる

ディストリビューション

キャッシュ

  • 拡張子やURLパスごとにキャッシュ期間を指定できる
  • 頻繁にアップデートされるコンテンツはキャッシュを短く、そうでないものはキャッシュを長くし運用のことを考えて指定
  • 動的なサイトはキャッシュを無効化することでCloudFrontをネットワーク経路として使用することもできる

実際に使ってみる

最初にディストリビューションを選択する。今回はWebを選ぶ。 f:id:akngo22:20200308161004p:plain

  • オリジンサーバーを指定する

    • 「Origin Domain Name」のお枠内を選択するとオリジンサーバー一覧をみることが可能
    • オリジンサーバーを選択すると「Origin ID」が自動的に入力される
    • 「Origin path」は「Origin Domain Name」以降でパスを指定したい場合に使う。
    • 例えば「xxx.example.com/production」のように指定するならば「/production」をOrigin pathに入力する。
    • 「Restrict Bucket Access」は、特定のS3バケットへのアクセスを特定のCloudfrontからのみにしたい場合に有効にする。
    • 「Origin Custom Header」は、デフォルトのリクエストヘッダーにKeyとValueを追加することで、オリジンサーバーにカスタムしたヘッダーを送ることができる f:id:akngo22:20200308162225p:plain
  • キャッシュの設定をする

    • 「Viewer Protocol Policy」はビューアーがコンテンツにアクセスするときに許可するプロトコルを指定できる
    • 「Allowed HTTP Methods」は許可するHTTPメソッドを選択
    • 「Field-level Encryption Config」はフィールドレベルで暗号化するかどうか(Allowed HTTP MethodsGET, HEAD, OPTIONS, PUT, POST, PATCH, DELETEを選択したときに設定できる)
    • 「Cache Based on Selected Request Headers」でリクエストヘッダをキャッシュするか設定できる。「Whitelist」を選択するとキャッシュするヘッダーを選択することができる
    • 「Object Caching」をカスタムにするとTTLをカスタマイズすることができる
    • 「Lambda Function Associations」ではCloudfrontにLambda@Edgeを紐づけることが可能(例えばBasic認証用のLambdaなど) f:id:akngo22:20200308164645p:plain
  • ディストリビューション詳細設定

    • AWS WAF Web ACL」はCloudFrontに紐づけるWAFのWebACLを選択できる
    • 「Alternate Domain Names(CNAMEs)」はオリジンサーバーのCNAMEを指定できる
    • SSL Certificate」はオリジンサーバーのCNAMEでコンテンツを配信する場合はSSL証明書を発行する必要がある。AWSだとACMSSL証明書発行できる。
    • 「Logging」ロギングを有効にするとS3にログを蓄積させることができる
    • Bucket for Logs」ログ格納用のバケットを指定 f:id:akngo22:20200308173816p:plain
  • パスによる振り分けをする場合

「Behaviors」タブから設定できる。パスパターンごとにオリジンを指定する。 f:id:akngo22:20200308180742p:plain