プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • AWS
  • 【AWS】「CloudFront」の設定など
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【AWS】「CloudFront」の設定など

06.16

  • miyabisan2
  • コメントを書く

この記事は4分で読めます

CloudFrontとは?

高速にコンテンツを配信するサービス(CDN)

CDNとは?

コンテンツ配信サーバーの総称のことです。

概要

オリジンサーバー(元画像配信サーバーで基本的にはS3を使います。)上にあるコンテンツを世界中100箇所以上にあるエッジロケーション(CloudFrontの配信場所)にコピーしてそこから配信します。

オプション

リザーブドキャパシティ

長期利用(1年)における割引料金の適用がある。意外と知らない人が多い。

特徴

高速に動作

ユーザーから最も近いエッジサーバーから画像を配信する。単純にS3が配置されているオリジンサーバーから直接配信する場合に比べてより近くなるのでより速くなります。

また、キャッシュしないコンテンツでもオリジンとの通信の最適化により配信の高速化を実現しています。

gzip圧縮にも対応しています。

リクエストヘッダーにAccept-Encoding:gzipが指定されていてCloudFrontエッジにてgzip圧縮を行って配信を行います。(特にs3はgzip圧縮をサポートしていないので特に有効なオプションになります。)

サーバー負荷が少ない

エッジサーバーでコンテンツのキャッシュを行うので、毎回オリジンサーバーに取りに行かずキャッシュしている結果をリクエスト元に返すだけなので負荷をかけずに配信できる。

キャパシティアクセスからの解放

予測不可能なスパイスアクセスへの対応、勝手にスケールしてくれる。なのでユーザー側でサーバーを増やすなどの設計する必要がない。

ビルドインのセキュリティ

WAF連携、AWS ShieldでのDDos対策

設定が容易で即時利用可能

15分程度の設定で利用可能、CloudFormationで自動化することも可能。

充実したレポーティング

ログ、ダッシュボード、通知機能

完全従量課金制度

初期費用がなく安価、一時的な利用も可能

Lamba@Edgeとは?

CloudFrontの機能の一つでCloudFrontのエッジサーバでコードを実行するlambda関数のこと。ユーザーに近い場所でコードが実行されることでアプリのパフォーマンスが向上する。CloudFrontのイベントをトリガーとしてコードを実行する。

大枠のイメージ図

ディストリビューション

cloudFrontの大枠の概念

  • ドメイン毎に割り当てられるCloudFrontの設定になります。
  • ディストリビューションごとに使用量の上限(最大40Gbpsもしくは100000RPSを超える)があります。それを超える場合は緩和申請が必要です。
  • デフォルトでは「xxxx.cloudfront.net」がディストリビューションのドメイン名として割り当てられます。
  • CNAMEエイリアスを利用することで代替独自ドメインの指定は可能です。(ただし、有効なSSL/TLS証明書の対象であることが必要です。)
  • Route53と組み合わせたZone Apex(例:example.comなど)が利用可能です。

Behavior

オリジンと紐づけるパスパターンの他にキャッシュポリシーや、オリジンリクエストポリシーという設定が可能になっています。URLパス毎にキャッシュの設定ができます。

Webサイトはパス毎(imageや、api、html,cssなど)によってキャッシュの運用方法が全く変わってくることが普通なのでBehavior内でURLパス毎にいろいろなキャッシュ設定を用意する運用が普通です。

Origin

どのサーバーとcloudfrontを紐づけるのか設定します。

ビヘイビア側の設定

圧縮サポート

ビューアーからのリクエストに応じて特定のタイプのコンテンツを必要に応じて自動的に圧縮し、キャッシュ及びレスポンスするための設定です。GzipもしくはBrotliに自動的に圧縮します。

注意点

圧縮を利用するうえで、TTLが0以上に設定されているなどいくつか縛りがあります。

キャッシュポリシー、オリジンリクエストポリシー、キャッシュコントロール

cloudfrontにおけるキャッシュ設定です。Webアプリケーションにおいてキャッシュ戦略は重要かつ、内容も濃いので別記事で解説しています。

CloudFrontのキャッシュポリシー、オリジンリクエストポリシー

Origin設定

S3でも良いですし、ALB、EC2、オンプレミスにある独自のHTTPサーバなど様々なサーバーをオリジンとして指定できます。

Origin Domain Name

オリジン(元画像配信元サーバー)のドメインの名前です。S3等のドメイン名を指定します。

Origin Path

S3の中でも特定のディレクトリを指定したい場合は指定します。指定しなくても問題ないです。

Origin ID

Origin Domain NameにS3のドメインを入力した場合は自動で入力が行われます。

Restrict Bucket Access

CloudFrontのドメインのみにアクセスさせたい場合はYesにします。CloudFrontも独自ドメインもどちらも使いたい場合はNoにします。

Origin Custom Headers

特に設定する必要がないので空のままでも大丈夫です。

Distribution Settings

Price Class(料金クラス)

どこから配信するかの設定値です。「Use All Edge Locations(Best Performance):すべてのエッジロケーションを使用する(最高のパフォーマンス)」がデフォルトで選択されていると思いますがこれを選択しておけば全てのエッジロケーションを使用して最適の配信をしてくれるので問題ないでしょう。

カスタムエラーページ

  • 4xxなどのエラーが出た場合はオリジン側で対処します。(エラーページがキャッシュされると困るため)
  • 5xx系はオリジン側のエラーのためCloudFront側で対処します。エラーキャッシュ期間(Error Cacheing Minimum TTL)はデフォルトで5分間になります。

独自ドメインから配信する。

できればCloudFrontのドメインではなく、SEOの観点で独自ドメインで配信されることが望ましい(サイトと画像配信ドメインが同じである方がSEO観点では強いと一般的にいわれます。)です。

Certificate ManagerでSSLサーバ証明書を発行する。

Certificate Manager

サーバ証明書を管理するためのAWSのサービスです。

SSLサーバ証明書

Webサーバーの持ち主が実在していることを証明する証明書です。ブラウザとWebサーバ間でHTTP通信をする際に必要となります。

CloudFrontのディストリビューションに独自ドメインを代替ドメインとして登録する。

代替ドメインとして登録するにはSSLサーバ証明書が必要になります。

Route53で独自ドメインとCloudFrontドメインのCNAMEレコードを作成する。

独自ドメインにアクセスされた際に、CloudFrontドメインに転送されるようにします。

アプリケーション側で独自ドメインの登録をする。

アプリに独自ドメインを登録することでCloudFrontとして登録されるドメインが独自ドメインになります。

スポンサーリンク
  • 2020 06.16
  • miyabisan2
  • コメントを書く
  • AWS
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2021 01.11

    【AWS】「オンプレミス」→「AWS」へのDNSアクセス、VPC外へのアクセスなど

  2. 2020 07.11

    【AWS】「ELB」、構築手順

  3. 2021 01.10

    【AWS】「AWS Step Functions」について

  4. 2021 01.16

    【AWS】「ストレージ」(S3、EFS、Glacier、Storage Gatewayなど)

  5. 2020 11.10

    【AWS】「Lambda」、関数の定義

  6. 2019 11.24

    【AWS】AWSの全体像、無料枠

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【インフラ】設計方針

【AWS】「ELB」、構築手順

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー