2017-03-22 S3 + CloudFront + Certificate Manager
bouzuya/mr-jums の asset (*.js
/ *.css
/ *.png
) を Heroku ではなく AWS から返すようにした。具体的には AWS の次のサービスの組み合わせだ。
なぜ、この組み合わせなのか。
まず S3 はファイルの保存場所だ。滅多なことでは消失しない。価格も許容範囲だ。直接 Web サイトとしてホストすることもできる。独自ドメインも設定できる。
ただ S3 における問題はいくつかあって、その例が次のものだ。
- 独自ドメインで https にできない
- 海外から参照すると速度が低下する
https のために証明書の取得をする。 そこで使うのが Certificate Manager だ。CloudFront や ELB のための証明書の取得・管理を無料でできる。これは良い。
しかし Certificate Manager を直接 Amazon S3 に適用することはできない。そこで CloudFront を経由する。
CloudFront は CDN だ。エッジロケーションにおけるキャッシュはもちろん。いくつかの機能を提供している。圧縮や、独自ドメインでのアクセス、Certificate Manager への対応もそうだ。
最後は Route 53 だ。 Route 53 は DNS だ。 CloudFront や S3 に独自ドメインを設定する場合に A (ALIAS) レコードを使うことができる。
bouzuya.net には次のように適用している。
- 2014-05-20 S3 でホスト (GitHub & Travis CI による自動デプロイ)
- 2017-02-18 Certificate Manager & CloudFront により CDN & https 対応
blog.bouzuya.net には次のように適用している。
- 2014-05-27 当初から S3 でホスト
blog.bouzuya.net の https 対応はまだだが、近いうちに実施する。
今回の記事には書かないが、キャッシュは事故のもとなのでできるなら避けたいという考え方はあると思う。そこで rev-hash
を付与する対応も mr-jums に入れている。また近いうちに書く。
追記: 2017-03-23 に書いているが、 CloudFront を使う場合にはサブディレクトリのインデックスドキュメントの挙動に注意が必要だ。