サイトを VPS から Amazon S3 に移行した話

このサイトを VPS から Amazon S3 に移行した話.クラウドストレージサービスへ移行の理由や Amazon S3 を選択した理由など.

追記 2016-9-27(Tue)

Apex ドメインでも利用できる Firebase に移行しました

VPS からクラウドストレージ系への移行の理由

一言でいえばサーバレスな環境にして身軽になりたいよね,という理由.自宅サーバからVPS移行して身軽になったように VPS からストレージ系サービスに移行してさらに身軽になる作戦である.

今まで,このサイトは VPS に Linux インストールして HTTP サーバ起動して Web サイトを提供していた.ただ最近,次のような状況であった.

  • サーバの管理が面倒
    • セキュリティ対応のためのパッケージアップデートやHTTPサーバの正しい設定など,結構面倒だった.
  • サーバとしてほぼ利用しなくなった
    • 静的なWebサイトなので,phpとかの環境が不要になった.
    • 以前は wordpress を利用していたので php の実行環境が必要だった.サイト構築を hugo に移行したので HTTP サーバだけで十分な環境となった.

そこで今流行のクラウド系サービスを利用してサーバレスなウェブサイトに移行しようと考え始めた.

Amazon S3 を選択した理由

独自ドメインと https でサイトを提供できる(Amazon CloudFront, いわゆる CDN サービス,と併用すれば),という理由で S3 を選択した.

Google Cloud Storage と Github Pages も候補だったが,どちらも単体では独自ドメインかつ https はできないようだった.ちなみに,両方とも CloudFlare (別の CDN サービス)と併用すれば独自ドメインと https を提供できるようだが, NSレコードの変更が必要なようだったこと, Amazon S3 の場合は Amazon 内で完結するという理由で Amazon を選択した.

Apex domain で CloudFront などが利用できない問題

Apex ドメインは example.jpexample.com などのサブドメインを含まないドメイン名のこと.このサイトは Apex ドメインとサブドメイン www でサイトを運用していた.ホスト名が短いほうが好きなので.

しかし,この Apex ドメインでは CNAME の設定が必要な CloudFront のようなサービスを利用できないことがある.これは Apex ドメインに CNAME が設定できないから.

Apex ドメインは NS レコードを設定する必要があるが, CNAME レコードは他のレコードと共存できないから.

A CNAME record is not allowed to coexist with any other data. 2.4 CNAME records, RFC1912

仕方がないので, Apex ドメインは使用しない方針として,当面の間はApex ドメインに VPS の IP アドレスを割り当て 301 リダイレクトすることにした.

以下 Apex ドメインと CNAME に関する補足リンク

Amazon S3 で静的Webサイトを構築する参考リンク

最後に参考にしたリンクをいくつかのっけておく.