LoginSignup
0
1

More than 3 years have passed since last update.

Amazon CloudFrontのオンラインセミナー受けてみた

Last updated at Posted at 2019-08-06

AWS Black Belt Online Seminar Amazon CloudFrontの概要」の自分向けメモ
CloudFront知ってるけど使ったことない......レベルの人向け

AWSのエッジサービス

  • エッジサービスとはエッジロケーションから提供されるサービス群のこと
  • ユーザーにより近い場所から提供
  • リージョンとは別に176か所にある
  • オリジンサーバーへのコンテンツ取得を軽減できる
  • エッジロケーションも冗長化されている

一般的なWebアクセスの課題

レスポンスの遅延、不安定なレスポンス

  • ネットワーク遅延は距離に依存
  • 応答時間の多くがネットワーク転送の待ち時間を占める場合もある

大量アクセスへの対応

  • 大量のアクセスをさばくために、不要なトラフィックをオリジンに到達させない仕組みが必要
  • Webコンテンツには静的なデータが多く含まれる
  • 同じデータを何度も取得するのはネットワーク帯域、サーバーリソースの無駄な消費

概要

特徴

  • 高性能な分散配信
  • 高パフォーマンス
  • 自動でスケーラブル
  • セキュリティ
  • 容易に即時利用可能
  • 充実したレポート
  • 従量課金

CDN

  • エッジからコンテンツをキャッシュしたり代理配信するサービス
  • バックエンドはそのまま利用可能
  • エッジからオリジンへのアクセスはHTTPSだが、インターネット経由
  • gzipで圧縮して配信可能
  • キャッシュコントロール機能あり
  • TTL指定可能

エッジロケーションの割り当て

  • DNSを応用した仕組みを利用
  • DNSの問い合わせ先にCloudFront DNSがあり、最適なIPを返却している

リージョナルエッジキャッシュ

  • エッジが増えるとオリジンの負荷が上がる課題があった
  • リージョナルエッジキャッシュを挟むことで、オリジンの負荷が下がる
  • 他CDNサービスより負荷が下がった実績がある

高速配信機能

配信の流れ

  1. S3等をオリジンサーバーに設定
  2. ファイルアップロード
  3. ディストリビューション作成
  4. ドメイン名割り当て
  5. ディストリビューションの構成を全てのエッジロケーションに送信

ディストリビューション

  • ドメイン毎に割り当てられるCloudFrontの設定
  • ディストリビューションあたりの使用量が決まっている
  • デフォルトでは「xxxx.cloudfront.net」がディストリビューションのドメイン名として割り当てられる

動的コンテンツキャッシュ

  • オリジンサーバーに対してHeader、Cookie、クエリ文字列情報をフォワードできる
  • Cookie、クエリ文字列をオリジンへ転送

きめ細やかなキャッシング

  • キャッシュ動作(Behaviors)を活用したマルチオリジン(オリジンを分ける)

カスタムエラーページ

  • エラー時にS3から静的エラーページのコンテンツを返す

タイムアウトの設定可能

オリジン読み取りタイムアウト

  • CloudFrontがカスタムオリジンからの応答を待つ時間を指定

キープアライブタイムアウト

  • 接続を閉じる前にCloudFrontがカスタムオリジンとの持続的接続を維持する最大時間を指定

オリジンフェイルオーバー

  • オリジングループを作成、プライマリ、セカンダリを設定
  • 設定したエラーコードになった場合、バックアップオリジンにルーティング

データ保護機能

SSL証明書

  • cloudfront.netドメインのSSL証明書は標準で利用可能
  • ACMも可能
  • 独自SSL証明書も可能(ACMにアップロード)

エッジとオリジン間の暗号化

  • カスタムオリジンはHTTP、HTTPS、クライアントの通信プロトコルに合わせるを指定可能
  • S3はHTTPのみ指定可能

オリジンカスタムヘッダー

  • エッジからオリジンへの通信時にHTTPヘッダーを追加可能
  • オリジン毎に固定で追加、または上書きが可能

地域制限

  • 接続されるクライアントの地域情報を基に、エッジでアクセス判定
  • ブラックリストもしくはホワイトリストで指定可能
  • 制限されたアクセスには403を返却

署名付きURL/Cookie

  • 認証サイトで署名付きCookieを取得してからアクセス
  • 署名がないアクセスはブロック

データフィールドの暗号化

  • 公開鍵で暗号化、オリジンの機能の中で復号化
  • 個人情報を暗号化、特定の機能でしか復号できないようにする

オリジンサーバーの保護

S3

  • Origin Access Identity(OAI)を利用
    • S3バケットへのアクセスをCloudFrontのみ制限

カスタムオリジン

  • CloudFrontで指定された任意のヘッダーをオリジンでチェック
  • CloudFrontが利用するIPアドレスのみ許可する

AWS WAF連携

  • ディストリビューションに適用

AWS ShieldによるDDOS攻撃

  • デフォルトで有効
  • 無料で利用可能

レポーティング

傾向分析やリアルタイム監視が可能

Cache Statistics

  • I/Oの量やステータスコードをモニタリング

Monitorign / Alarms

  • メトリクスはバージニア北部リージョンに出力される
  • しきい値とアラートの設定可能

Popular Objects

  • リクエスト数の多い上位50のコンテンツが一覧で見られる

Top Referrers

  • ディストリビューション毎にリクエスト数の多い上位25の李ファラードメインが一覧で見られる

Usage

  • ディストリビューション、アクセス元リージョン毎にリクエスト数が見られる
    • エッジ、オリジン間のデータ転送容量が見られる

Viewers

  • ディストリビューション毎のクライアントデバイス情報
    • デバイス種別の比率
    • ブラウザ種別の比率
    • OS種別の比率
    • ロケーション毎の比率

CloudFrontアクセスログ

  • S3バケットに出力
  • タイムラグあり

レポーティングまとめ

  • レポート:AWSマネジメントコンソール
  • リアルタイムモニター:CloudWatch
  • アクセスログ:S3

Tips

  • Route 53と連携し、DNS名前解決の高速化
  • 障害異常検知はCloudWatch Alarmを活用する
  • 自動キャッシュを無効化するときはS3アップロードをトリガーとしてLambdaを利用

Lambda@Edge

  • CloudFront + Lambda = Lambda@Edge
  • フルマネージド
  • オートスケール
  • 従量課金
  • 対障害性
  • グローバル分散

キャッシュヒット率の向上

  • クエリ文字列、ユーザーエージェントの正規化
  • ヘッダー、Cookie、クエリ文字列に基づき、複数のオリジンへ動的ルーティング

コンテンツ生成

  • 画像リサイズ、HTMLページ生成

セキュリティ

  • 認証
  • セキュリティヘッダ付与

作成の流れ

  • バージニア北部リージョンで作成
  • ディストリビューショントリガーと関連付け
  • 各リージョンにレプリケート
  • ログは各エッジに紐づくリージョンに出力される

まとめ

  • レスポンスの改善とオリジン負荷軽減
  • WAFと組み合わせ、高いセキュリティを実現
  • ログレポート機能でアクセス傾向分析
  • Lambda@Edgeと組み合わせて、UX向上
  • 大容量配信や大量アクセスがあるサイトに有効
  • 小規模でもセキュリティが求められるサイトに有効
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1