一般的にAWSでwebページを公開する時には、EC2を用いて公開すると思います。
他にもPHPなどを使わない静的サイトであれば、AWSのS3を使って公開することも出来ます => Amazon S3 で静的なウェブページを公開してみた。
S3はストレージサーバなのでほとんど落ちることがありません。SLAも99.999999999%を保証しています。
ほぼ落ちることがないので、大量のアクセスが見込まれる企業のキャンペーンサイトなどに向いていると言われいています。
そのかわり落ちることがないので、大量のアクセスが来ると、かなりの金額になってしまいますが…)
今回は小規模な静的サイトを公開する場合、EC2を使って公開 するのと S3を使って公開する のがどちらが安くすむのかを考えます。
前提条件
無料枠に入っているサービスもあるので、アカウント開設から一年はRoute53とドメイン料金だけで済むかもしれません。
今回は無料枠がなかった場合で考えていきます。
最近はSSLに対応していないサイトは警告が出るようになってしまったので、SSLに対応させます。
またドメインは別途取得済みであると仮定します。
なるべく安く済ませたいので、インスタンスタイプはt2.microとします。
(t2.nanoのほうが安いですが、メモリが0.5GiBと心もとないのでmicroにします)
EC2で公開する時に必要なもの
- EC2インスタンス一台(t2.micro)
- EBS(ストレージ)
- EIP(固定IP)
- Route53(DNS)
- Let’sEncrypt(無料のSSL証明書)
最小構成でwebページを公開するとしたら、上記のようなものになると思います。
CloudFrontなどを用いて、キャッシュしたほうが転送量が少なくなるので安くなるかもしれませんが、今回は考えません。
S3で公開する時に必要なもの
- S3一台
- CloudFront
- ACM
- Rotue53
S3でwebサイトをSSL化するときは、CloudFrontを通してACMを通してSSL化します。
ACMはAmazonが証明書を自動的にアップデートしてくれるので、Let’sEncryptを用いる方法より簡単かもしれません。
料金計算の条件
AWSは従量課金制のサービスなので、ストレージ容量や、転送量、などで料金が発生します。
今回は小規模なwebページであるとします。
Chromeのデベロッパーツールでネットワークの転送量を見ることが出来ます。
今回は小規模なサイトとして、転送量が500KBの比較的小さめのサイトであると仮定します。
またストレージはElasticBeanstalkでデフォルトで作成される8GBで計算したいと思います。
小規模なサイトの場合もう少し容量が低くても大丈夫かと思います。
そして月間1万PVを達成したとします。
EC2で構成する場合の料金
- t2.microインスタンスの料金 : 0.0152USD/時間
- EBSの料金 : 汎用ストレージで 0.12USD/1GB
- EIPの料金 : 稼働しているインスタンスに対して1つのEIPの場合は料金がかからないので、今回は無視
- Route53の料金 : 1ホストゾーンあたり0.50USD (クエリは料金が安いため無視します)
- Let’sEncryptの料金 : 無料
これらを合計すると、以下のようになります。
0.0152(インスタンス) * 24(1日) * 30.5(月間) + 0.057(転送量) + 0.96(EBS) + 0.50(Route53) = 12.6434USD 12.6434 * 107 = 1352.8438円
1ヶ月あたり約1350円ですね!
S3で構成する場合の料金
S3→CloudFrontのデータ送信に料金はかかりません。
- ストレージ料金 : 0.025USD/GB
- リクエスト料金 : 0.0047USD/1000リクエスト
- 転送量 : CloudFrontで計算 0.0114GB
- Route53の料金 : 1ホストゾーンあたり0.50USD (クエリは料金が安いため無視します)
- ACN : 無料
0.2(ストレージ) + 0.047(リクエスト料金) + 0.57(転送量) + 0.50(Route53) = 1.317 1.317 * 107 = 140.919円
1ヶ月あたり約140円ですね!
激安です。また、S3は実際に使用しているストレージ分の課金になるので、ファイルサイズが小さい場合はもっと安くなります。(微々たる差ですが)
もっと転送量が大きくなると?
ではもっと大きいサイトを公開するとします。
転送量をこのハックノートで見積もりたいと思います。(WordPressで動いてるので、S3でホスティングすることは出来ませんが、1つの目安としてご確認ください。
(それとt2.microではないです。)
こちらも仮に1万PVとして計算します。
先程の式に当てはめて計算します。
EC2の場合
0.0152(インスタンス) * 24(1日) * 30.5(月間) + 1.368(転送量) + 0.96(EBS) + 0.50(Route53) = 13.4544 13.4544 * 107 = 1439.6208円
約1440円とあまり大した差ではないですね。
S3の場合
0.2(ストレージ) + 0.047(リクエスト料金) + 1.368(転送量) + 0.50(Route53) = 2.115 2.115 * 107 = 226.305円
約226円ですね
終わりに
よほどの大量アクセスがきて、「EC2は落ちるけどS3だから落ちないよ〜」というような状況が来ない限りは、S3のほうが安そうですね。
そもそもS3ではサーバーサイドのプログラム(PHPなど)は動かすことが出来ないので、JavaScriptでwebアプリを作ったりした時や、HTMLとCSSでコーディングしたホームページなどを公開するといった使い方をするので、EC2との単純比較は出来ないかもしれません。
ApacheやらNginxやらの設定で悩むこともありませんし、手軽に公開できるのがメリットですね。