この連載ではここまで、LightFile Proxyの主要な機能について説明を展開してきた。本記事ではそれら以外の細かな特徴についてまとめて解説をしたい。ひとつのLightFile Proxyクラスタで複数のサイトをカバーする仕組み、プライベートなS3バケットをオリジンにする場合の認証、レポート機能を解説する。
連載「詳説 LightFile Proxy」
AWS CloudFrontの後ろに置いて、既存のサイトを変えずに画像をWebPで配信する仕組みを説明する連載。
ひとつのクラスタで複数のサイトをカバーする仕組み
LightFile Proxyは、ノードの数によって伸縮できるクラスタを単位に提供している。画像フォーマットの変換に必要な能力はサイトによって大小があるが、クラスタ構成をとっているので性能を柔軟に調整できる。
このクラスタは、ひとつのサイトにひとつずつ用意するものではない。ひとつのクラスタで複数のサイトをカバーすることもできる。
ではどのようにひとつのクラスタへ複数サイトを同居させるのか。CloudFrontからLightFile Proxyに接続する際、x-routingというサイト識別用のカスタムヘッダを付けることを慣習としている。
x-routing: site-a
x-routing: site-bこのようにCloudFrontのディストリビューションから識別子が渡されてくる。LightFile Proxyでは複数のオリジンを設定でき、どのオリジンを参照するかをこの識別子によって切り替えている。

値の照合は完全一致が基本で、正規表現も使える。x-routingではなくhostを見ている設定もある。
ヘッダだけでなくパスの前方一致も条件にできる。同じサイトの中で、/products/はこのサーバー、/static/はこのバケット、という分け方もできるようになっている。
Hostの付け替えも可能
オリジンの設定には、取りに行くURLとは別にオリジンへ送るHostヘッダを指定できる。
画像の実体がホスティング事業者のサーバーやALBにあって、lb-1234.ap-northeast-1.elb.amazonaws.comのような名前で公開されていることがある。そうしたサーバーは公開ドメインのHostで来たリクエストしか正しく扱えないので、URLはALBの名前、Hostは公開ドメイン、という組み合わせで取りに行く。指定したHostはTLSのSNIと証明書の検証にも使う。
http://のままのオリジンも指定できる。
Basic認証のかかったオリジン
公開前のサイトやステージング環境のように、Basic認証で保護されたオリジンにも対応している。ユーザー名とパスワードを設定に入れておくと、取りに行くとき付けて送る。
パスワードは公開鍵で暗号化して保管し、復号できるのはクラスタのノードだけになる。
ひとつのクラスタに何サイトまで載せられるか
性能の範囲で、という条件付きになる。目安になる実績を並べておく。
- 最大のクラスタは48オリジン(48サイト)
- 10ノード構成で1時間あたり約100万〜140万リクエストを捌いた実績
サイトごとにクラスタを分ける必要はないが、画像の量やアクセスの傾向が極端に違うサイトを同居させると、片方の変換がもう片方を待たせることはある。新しいサイトを足すときは、その点を見て判断している。
プライベートなS3バケットもオリジンにできる
画像がS3にあるなら、バケットを直接オリジンにできる。パブリックアクセスを開けていないバケットでも、S3のAPI経由なら取りに行ける。 認証の方法は2つある。
クロスアカウントアクセス。 バケットポリシーに、弊社のIAMユーザーからのs3:GetObjectを許可する一文を足してもらう。お客様側でIAMユーザーを作る必要も、認証情報を弊社に預ける必要もない。こちらを勧めている。
IAM認証情報の登録。 バケットポリシーを触れない事情があるときは、お客様が用意したIAMユーザーのアクセスキーを登録してもらう形も選べる。シークレットアクセスキーはブラウザ上で公開鍵暗号により暗号化され、そのまま保管される。
ただし、同じ画像がWebサーバー経由でも取れるなら、そちらを勧めている。S3のAPIは呼ぶたびに署名が要りTLSも必須になるが、公開のWebアクセスならどちらも要らない。応答が速く、オリジン側の負荷も軽い。
稼働状況を見る統計レポート
LightFile Proxyには、稼働状況を見るダッシュボードが付いている。

グラフは4種類あり、それぞれ指標と、それを分けるグループを選べる。
Webサーバー CloudFrontから届くリクエストについて。
- 指標 — リクエスト数/合計送信バイト数/平均応答時間/最大応答時間
- グループ — オリジン/キャッシュ処理/ステータスコード
フォーマット変換 JPEG・PNG・GIFからWebPへの変換について。
- 指標 — 変換数/変換前の合計サイズ/変換後の合計サイズ/平均処理時間/圧縮率
- グループ — オリジンURL/変換前後のフォーマットの組み合わせ/エラー種別
変換待ち 変換のタスクがどれだけ滞留しているか。
ロードアベレージ ノードの負荷。
- 指標 — 1分/5分/15分の平均と最大
- グループ — ロール(Webサーバー/タスクワーカー)/ノード
期間は1時間(1分ごと)・3日(1時間ごと)・90日(1日ごと)から選ぶ。折れ線と棒、積み上げの有無も切り替えられる。
ユーザーは契約したLightFile Proxyがどのくらい稼働しているか、画像データをどのくらい削減できているかをいつでも詳細に確認できる。
使用量をオリジンごとに見る月次レポート
日々のグラフとは別に、オリジンごとの月間使用量を並べた画面がある。

オリジン単位でリクエスト数と転送データ量が出て、月内の割合と前月比のペースを切り替えて見られる。
この画面は代理店やシステムベンダーとして再販するときのためにある。どのオリジン(サイト)でどのくらい負荷が生じているかを月次で押さえられるので、預かっているサイトごとの使用量が分かる。予定していた量から大きくずれていないかの確認にも使える。