AWS 落穂拾い (Caching)
[履歴] [最終更新] (2022/09/08 01:24:09)

CloudFront

  • Origin Access Identity (OAI)
  • CloudFront 経由で S3 へのアップロードが可能です。Amazon CloudFront – Content Uploads Via POST, PUT, other HTTP Methods
  • CloudFront Edge Location の Public IP を Origin 側でアクセス許可しておく必要があります。Locations and IP address ranges of CloudFront edge servers
  • Origin は Public である必要があります。Using Amazon EC2 (or another custom origin)
    • ALB を用いずに EC2 (Origin) を public にする構成。
    • public な ALB (Origin) のバックエンドに EC2 を private に配置する構成。
  • S3 Cross Region Replication との用途の違いに注意します。
  • GeoIP で、アクセス元の country を特定し、Allow/Black list でアクセス制御できます。How can I restrict users in certain locations from accessing web content served by my CloudFront distribution?
  • CloudFront Edge Location にアクセスするための Signed URL を API で発行可能です。
    • S3 Pre-Signed URL と区別します。Choosing between signed URLs and signed cookies
    • 似た仕組みに CloudFront の Signed Cookies が存在します。
      • Signed URL → 個々のファイルに対して発行します。
      • Signed Cookies → ユーザに対して発行します。複数のファイルに対するアクセスを一括で許可できます。Signed URL と異なり、CloudFront の URL を使い続けることができます。
  • CloudFront でカスタム HTTP ヘッダーを挿入して Origin に通信できます。Adding custom headers to origin requests
    • Origin 側では、HTTP ヘッダーの有無でアクセス制御が可能となります。
    • 前述の OAI と異なり、S3 に限らず、任意の origin で活用できる仕組みです。
  • HTTP ヘッダ、セッション Cookie、クエリストリング 等を key としたキャッシュが可能です。Controlling the cache key
  • Edge Function
    • CloudFront distribution にアタッチする関数です。
    • ユーザから近い Edge で実行されるため、遅延が小さくなります。
    • 用途例
      • request/response の書き換え。
      • request のフィルタリング。
      • 認証。
    • Client を Viewer と表現し、Viewer Request/Response とよびます。
      • Origin との通信を Origin Request/Response とよびます。
    • CloudFront Function Customizing at the edge with CloudFront Functions
      • JavaScript で記述します。
      • Origin request/response は処理できません。
      • HTTP リクエストの body は処理できません。
      • Lambda@Edge よりもクライアントに近く、Edge Location で動作します。
        • Lambda@Edge と組み合わせて動作させることができます。
        • CloudFront Function で viewer request/response を処理し、Lambda@Edge で Origin request/response を処理。
      • 用途例
        • Cache key の normalization。
        • ヘッダの差し替え。
    • Lambda@Edge Customizing at the edge with Lambda@Edge
      • NodeJS または Python で記述します。
      • Regional Edge Cache で動作します。
      • CloudFront Function と比較すると高機能です。
      • CloudFront Function と比較すると低速です。
      • Viewer/Origin request/response のすべてを処理できます。
  • S3 origin における HTTP 307 Redirect response
    • S3 を CloudFront の origin に設定すると s3.amazonaws.com が指定されます。
      • s3.amazonaws.com は us-east-1 リージョンを指します。
    • 東京リージョンを指すエンドポイントは s3-ap-northeast-1.amazonaws.com です。
    • S3 バケット名が全リージョンに反映されるためには、最大24時間かかります。

ElastiCache

  • Redis
  • Memcached
    • Multi-node による sharding で性能を向上させます。
    • データは永続化されません。
    • バックアップおよびリストアはサポートされません。
関連ページ