bouzuya.hatenablog.com

ぼうずやのにっき

S3 + CloudFront + Certificate Manager

bouzuya/mr-jums の asset (*.js / *.css / *.png) を Heroku ではなく AWS から返すようにした。具体的には AWS の次のサービスの組み合わせだ。

なぜ、この組み合わせなのか。

まず S3 はファイルの保存場所だ。滅多なことでは消失しない。価格も許容範囲だ。直接 Web サイトとしてホストすることもできる。独自ドメインも設定できる。

ただ S3 における問題はいくつかあって、その例が次のものだ。

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 には次のように適用している。

blog.bouzuya.net には次のように適用している。

blog.bouzuya.net の https 対応はまだだが、近いうちに実施する。

今回の記事には書かないが、キャッシュは事故のもとなのでできるなら避けたいという考え方はあると思う。そこで rev-hash を付与する対応も mr-jums に入れている。また近いうちに書く。

追記: 2017-03-23 に書いているが、 CloudFront を使う場合にはサブディレクトリのインデックスドキュメントの挙動に注意が必要だ。