ど素人がAWSのランニングコスト削減する


なにがしたいか

月々のランニングコスト削減したいです

いまのランニングコスト


Aug 2017にムラサキ色のバーがグーンっと伸びています。EC2-Instancesの課金分で$15≒¥1,620です。これまでは1年間の無料枠にあやかってましたので$0でした。

尚、EC2の無料枠は以下の通りです。

Linux t2.micro インスタンス使用 (1 GiB メモリ、32 ビットと 64 ビットのプラットフォームをサポート) 750 時間 – 毎月継続的に実行するのに十分な時間

どうすればいいか

KPTERというスマホアプリのランディングページ( https://kpter.net )をもっているのですが、静的ページだけしか公開していないのでこれをS3に乗り換えます。EC2と比較するとかなり安くなる見込みです。ついでにお勉強も兼ねてCloudFront + S3、いわゆるCache Distribution Patternの構成にします。

今回の要求

いまの動きのままでランニングコストだけ削減せよ

つまり以下を維持したまま、コスト削減を目指します。
1. naked domainに統一
2. All https

wwwなしのドメインをnaked domainと呼ぶらしいです。これは後で知った言葉でした。ここではkpter.netがそれになり、www.kpter.netにアクセスされたらkpter.netにリダイレクトします。naked domainについてはこちらが参考になります )

All httpsとはつまり全ページhttpsでやりとりさせます。httpのアクセスを拒否するのではなく、httpでアクセスされたらhttpsにリダイレクトさせるやりかたを採用します。余談ですが、HSTSは設定していませんので今回は考慮しません。本当はやっておきたい思いではあります。HSTSについてはググろう。

全体像

まずは構成図です。

スッカスカ。Cloudcraftというサービスで書きました。それぞれの役割は以下の通りです。

  • Route53...kpter.net, www.kpter.net ドメインの名前解決します。
  • CloudFront...httpからhttpsへリダイレクトします。本来はCDNとしての役割を持たせる目的で導入されることが多いかとおもいますが、ここでは意識する必要がないので割愛させていただきます。
  • S3...ランディングページの資産をホスティングします。さらに、 www.kpter.net へのアクセスを kpter.net へリダイレクトさせます。
  • ACM...SSL/TLS証明書を発行します。発行したSSL/TLS証明書はCloudFrontに適用します。また余談ですが、ACMで発行したSSL/TLS証明書はElastic Load Balancing、CloudFront、Elastic Beanstalk以外では利用できませんのでご注意ください。(以下、公式サイト引用)

Q: ACM により提供された証明書を使用できるのは、AWS のどのサービスですか?
ACM は AWS の以下のサービスと連携できます。
• Elastic Load Balancing – Elastic Load Balancing のドキュメントを参照してください。
• Amazon CloudFront – CloudFront のドキュメントを参照してください。
Amazon API Gateway – API Gateway のドキュメントを参照してください。
• AWS Elastic Beanstalk – AWS Elastic Beanstalk のドキュメントを参照してください。

see. https://aws.amazon.com/jp/certificate-manager/faqs/

いざ作業

こういうのはだいたい一番深いレイヤーから作り上げていくほうがやりやすいかもしれませんね。実際どうなんでしょう。教えてエロい人!

今回はS3→CloudFront+ACM→Route53の順番で構築しました。

細かい手順を期待されている方がいらっしゃるかもしれませんがここでは割愛いたします。代わり参考にしたリンクだけ残しておこうとおもいます。基本的には公式ページを参考にするスタンスで作業しました。

結果

before after difference
¥1,620 ¥70 -¥1,550 (95% OFF)