CloudFrontに関する雑多なメモ

障害時の対応に付いて

AWS - Amazon CloudFront の障害に備えてフェイルオーバーを設定する

ログフォーマット

s3, MediaPackageをオリジンとして使った時

ウェブディストリビューションでの Amazon S3 オリジン、MediaPackage チャネル、およびカスタムオリジンの使用

TTLがどのように効くのか

【新機能】Amazon CloudFrontに「Maximum TTL / Default TTL」が設定できるようになりました! | Developers.IO

パスパターンはワイルドカード

このため、HLSを配信するCDNは様に設定しました。

/studio*-lq.m3u8
/studio*.m3u8

重要 エラーページについて

『どの程度エラーページを保持するべきか』という設定がある

エラーレスポンスのカスタマイズ - Amazon CloudFront

CloudFrontのエラーキャッシュのTTLを変更する - Qiita

カスタムオリジンの話 別ドメインをオリジンとする。大抵のサービスはこれなのではないか

カスタムオリジンの場合のリクエストとレスポンスの動作 - Amazon CloudFront

初期設定

参考 キャッシュしないCloudFrontを設置する | // sakura note

Minimum TTL / Maximum TTL の話 一覧がある

【新機能】Amazon CloudFrontに「Maximum TTL / Default TTL」が設定できるようになりました! | Developers.IO

「Mimimum TTL / Maximum TTLはヘッダより強い」
「ブラウザのキャッシュはヘッダが優先される」
「何も設定しなければDefault TTLの値になる」
くらいのざっくりで覚えておいて、実際に設定する際にこの記事を参考にして頂ければと思います。

CDNのレイテンシ比較

Is TLS Fast Yet? コアな人々が反応してる

Googleがテスト中のCDN「Google Cloud CDN」は、ベータ版で既に世界最速 - GIGAZINE

(APIではクッキー使わないと確定しているので、今回の件とは異なるが) クッキーを『Forward Cookies All』に設定しているとマズい

CloudFrontで「Forward Cookies」を「All」にしている時に注意すべき点 | Developers.IO

CDNはエラーページもキャッシュする。404が発生してからファイルを置いてもキャッシュされた404のページが表示される

エラーページのキャッシュ時間
例えばオリジンサーバにファイルをアップロードする前に、CloudFrontのキャッシュサーバからアクセスした場合はどうなるでしょうか。 CloudFrontのエッジサーバはオリジンサーバにファイルを取得しようとしますが、オリジンサーバからは「404: NotFound」などのエラーレスポンスが返ってくるはずです。CloudFrontでは、エッジサーバでこれらエラーレスポンスをデフォルトで300秒(5分)キャッシュします。そのため、デフォルト状態ではオリジンサーバにファイルをアップロードする前にキャッシュサーバからアクセスしてしまった、などの場合は5分間はファイルにアクセスできない状態が続くことになります。

AWS再入門 Amazon CloudFront編 | Developers.IO

ログは1時間程度のタイムラグがある

ログはS3に保存されます。リアルタイムではなく、1時間ほど集計に時間がかかることに注意してください。 

http://dev.classmethod.jp/cloud/cm-advent-calendar-2015-aws-re-entering-cloudfront/

アクセス解析 傾向をつかむ( 下の方に紹介がある )

Amazon CloudFrontの強化されたアクセス分析機能を整理してみた | Developers.IO

invalidationは60秒で行われるようになった

【朗報】Amazon CloudFrontのキャッシュ削除(Invalidation)が速くなりました【5秒で90%】 | Developers.IO

mackerelプラグインある、と言っても、メトリクス取っても、あまりうれしくないかな、と、現状おもうので今はスルー

mackerel-agent-plugins/mackerel-plugin-aws-cloudfront at master · mackerelio/mackerel-agent-plugins

CloudFrontの冗長化

Amazon CloudFront の障害に備えてフェイルオーバーを設定する - Qiita

Route53のヘルスチェックの機能を用いて、切り替える。やり方としては、落ちたらオリジンを見るように設定するのが妥当か… 一瞬、『Cloudfrontが落ちたらAkamaiを見るように設定するか?』とも考えたが、『CDN間の異なる振る舞い』に引っかかるのは怖い。ので、APIに関しては『cloudfrontが落ちたらoriginを見る』のが妥当

翻って、ライブはどうか?これは『両方で実績がある』し『扱うのもAPIと異なり、変な状態でキャッシュしてしまう事が問題になる』割合が低い、のでAkamaiに自動的に切り替わる、という設定も技術的に可能ならありだと思う

( 既に設定ずみ、だと思う )cloudfrontを経由した時でも、nginxのログにはユーザのIPアドレスを残す

How to get the client IP when using CloudFront and nginx - Jayway

[HOWTO] Get real IP coming via AWS CloudFront and ELB to nginx – Medium

s3にコンテンツを置く、メリットとかステータスコードを変えるとか

CDNの使い方で『跡地だけs3に置いて、cloudfrontで経由させる』というテクニック。 nginxに大量に設定が残っているのはメンテしにくい

S3+CloudFrontだけでリダイレクト設定を作る - Qiita

CloudFrontをAmazon S3 オリジンサーバーからのリダイレクトでキャッシュさせない方法 - Qiita

ステータスコード 302だとNG, 307だと何故かokとのこと

参考

シンプルに作り方が載ってる Amazon CloudFrontをカスタムオリジンで使用する方法 | Lancork

VPCのNetwork ACLの変更が必要、との情報だった。凄く気になったが、結局、この方法は不要であった。この点、納得行かないので、一応、情報残しておく CloudFront最近の事例と間違った使い方

クラスメソッドは、『CDNオリジン用のサブドメインを切る』という運用のようだ ただし、レイヤーが一つ増えるというか、オリジン用のドメインが一つ増えて、構成が見えにくくなるので、ALBのドメインの設定でいけるのであれば、それで行きたい AWS WAFを使うためシステムにCloudFrontを導入した時の注意点まとめ | Developers.IO なにか、オリジン用のサブドメインが必要な理由があるか、探したが見つからなかった

クラスメソッドで「オリジンもSSLだし、CloudFront->ALB間もインターネットなのでSSL化したい」という話 CloudFrontからカスタムオリジンまでの通信をHTTPS化する方法を2パターン | Developers.IO

User
CloudFront
ALB
EC2
RDS