diary.sorah.jp

コスト最適化目的で個人 AWS アカウントの整理をした

ここしばらく円安が続いているのと、結局自宅サーバのおもりがへたっぴで崩壊し続けている関係で EC2 とかばんばか使っていたら日本円コストが嵩んでしまっていた。2024/2 から Public IPv4 Address 課金も開始されるのもきっかけ。

なんとかすべく 2023 年末に休みを取って大整理をやった。サボっていたけどこのままだとさすがにキツいなと思って基本的にはしょうもない整理です。基本的には homelab として意図的に色々あそべるようにしていたのを止めたりとかになる。ご笑覧ください。

どんなもん

Costs per Service

Payments history in JPY

  • 月間コスト 378 USD (2023/8) → 153 USD (2023/12), without tax
  • 日本円コスト 59,099 JPY → 24,583 JPY/mo, with tax

内訳 (USD);

  • EC2-Instances: 140.92 → 61.27
  • S3: 87.61 → 46.11
  • EC2-Other: 75.00 → 16.20
  • RDS: 22.10 → 0.11
  • ELB: 18.08 → 0
  • ECR Public: 8.64→ 0
  • KMS: 4.00 → 1.00

ちりつも嵩んだコストにも程度ってもんがあるだろという感想になってしまう。下記に施策をばらばらと。基本はサーバーフルをやめるとか整理とか。

以後の金額表記はすべて月間コスト。

us-west-2 撤収

昔 US 出張が多かったころに us-west-2 にも SSH bastion とか置いていたけど、これを撤収した。値段の理由で us-west-2 に基本的に EC2 インスタンスを置いたりもしていたけど、全て ap-northeast-1 に。結局自宅との接続とかもする関係で ap-northeast-1 は完全に捨てられないわけで、お金かかるし面倒を見る物体も増えるだけという。

マルチリージョンでどうこうするような実装とかは本業でもやっているし、個人で遊ぶのは満足したのでいいかなと思って撤収した。必要な EC2 インスタンスは ap-northeast-1 に引越しした。

金額は ap-northeast-1 に引越した分もあるし、他施策で撤収した分もあって厳密には出せてない。

ブログを静的サイトにして k8s クラスタを撤収した

に書いた通り Rack アプリと MySQL で運用していたブログを Next.js による静的サイトに変えた。

これによって EC2, RDS のサーバーフルな物体が不要になったので terminate. Homelab の一環的な意味で Kubernetes にしていて、唯一のアプリケーションだったためクラスタごと撤収したため、ALB 代も含めてかなり浮いた。元々自宅で運用していたのだけど、物理自宅サーバーたちが放置してたら崩壊したので一旦 EC2 にしたけど、まぁ高いよね (その上でそこも放置してたら壊れてたし)。

kubelet を spot にしてても 結局 master node が spot 耐性ないし、apiserver や controller, etcd がメモリを食いすぎて t3.medium で運用しないといけなくて高い。

基盤やアプリを運用して実トラフィックを受けつつ遊べる環境があると嬉しいという理由で Rack アプリにしていたのは 元同僚のモチベーション と同じなのだけど、時間がないのであれば安定性を取ってしまわざるを得ない……。

90 USD くらい削減。

Active Directory ドメインコントローラ冗長化廃止

ドメインコントローラも ap-northeast-1, us-west-2 に 1 台ずついたけどこれを ap-northeast-1 に 1 つだけ起動するように変えた。多少可用性が低くても homelab ならクリティカルではないというのが 5 年くらい運用して分かった結果。us-west-2 にマスタを置いていたので ap-northeast-1 に引越しを兼ねた再構築をした。Windows Server AD は引き続き実験環境として残します。

セカンダリであった ap-northeast-1 の t3.micro と入れ替えで、たぶん 20 USD くらい削減。

MTA を 1 台に

これまで sorah.jp のメール受信は EC2 で Postfix を運用していて、その関係で 3 台くらいあったのだけど、1 台に減らした。

で、メール受信は Pobox に変えた。メール送信は引き続き自前の Postfix だけど、Gmail に転送してスパム扱いにならないようにするための ARC の実装とか、そもそも転送する前のスパムフィルタとか、冗長化とかそのへんを総合的に考えて自前運用をあきらめ……。 Disclaimer: Affiliate Link

Pobox のスパムボックスを見ているとえきねっと, SMBC, ETC 利用紹介サービスとかが圧倒的に多くて面白い。特にえきねっとの会員登録削除の通知を騙ってるフィッシングがめちゃめちゃ多い。勝手に会員情報削除するの、この手のフィッシングに使われることになるんだなと勉強になる。

t3.nano x2 消滅でたぶん 8 USD くらいの削減。

S3 の整理

S3 にも様々なデータを置いているんだけどこれも整理した。

声優ラジオを全録とかしていた頃のデータを Glacier に沈めたり、重複データを消したり、他にもしばらく触らなそうなものを Standard-IA から Glacier にしたり変更した。テンポラリで置くつもりのものを消しそびれていて地味に容量がちりつもになっているなどもあり。あとは自分で撮影した写真の RAW も S3 に置いているけど、Lightroom CC に取り込み済の RAW は Glacier Deep Archive に沈めたり。

オーバーヘッドの関係で雑に Glacier に変更することはできなくて、各オブジェクトサイズを確認しながら実施する必要があるので Lifecycle Rule は使わずにスクリプトで処理。ListObjectsV2 は安い API オペレーションではないので、手元に保存しながら対象を絞るコード書いて CopyObject や DeleteObject を発行した。

S3 は ETag が標準で MD5 になるので簡易的な重複検知に便利。あと Storage Lens によってどのバケットがどれくらいオブジェクトがあってコストかかってるか分かりやすくなったのは便利でいいですね。

40 USD くらいの削減。

KMS の CMK をやめる

遠い昔になんとなく作って使い分けていた KMS の CMK を全部やめた。利用している用途はある程度はっきりしているので、たとえば S3 なら以下で AWS managed key で暗号化しなおしてから破棄。

aws s3 cp s3://bucket/ s3://bucket/ --recursive --sse AES256

まだ破棄できていない鍵もあるけど 4 USD 程度の削減。

ECR Public の整理

ECR Public には Lifecycle がないのでぼーっとしてるとイメージが溜まりがち。手動で掃除しました。

https://github.com/sorah/config/blob/master/bin/sorah-aws-ecr-public-cleanup

8 USD くらいの削減。

EC2 インスタンスをマージ

Vault, step-ca を動かす EC2 インスタンスを分けず 1 つにした。これは最近の Vault がメモリを消費して t3.nano に収まらなくなってしまったので、t3.nano をそれぞれ 1 台にしていたところを t3a.small で 2 つ同居させて 1 台に切り替え。

nano x2 が small x1 になったのでどちらかといえば微増。ただ、step-ca で動かしている fluentd が常に暴走して CPU Credits をめちゃめちゃ消費していたのも直したので 20 USD くらい削減。 ruby/resolv#9 抜きだと暴走する を踏んでいたっぽい。ついでに T3 Unlimited を切った。

EC2: t3 → t3a に

t3a に切り替えられる分は切り替えた。メインで利用していた Availability Zone に t3a が無かったので AZ 引越しも伴うことに。NAT/VPN 用 EC2 インスタンスが別 AZ に取り残されてしまったので、いつかどうにかしないといけない。微減。

EC2-Other: EBS を gp3 に

微々たる差ではあるけど全ての EBS を gp3 に ModifyVolume した。数ドルの削減。

全体で他施策でも整理しているのでこれだけでの効果は分かりづらい。全体で 280 GB が 135 GB くらいまでそもそも減ってる。

Arch Linux → Ubuntu に

直接のコスト削減ではないけど、EC2 で利用する Linux distro を Ubuntu に変えた。放置して apt-get upgrade とか、雑に再構築しても壊れないのは時間がない人間にとって便利。

監視機能を自宅に

これは 2022 年末に実施していたけど、Prometheus やログ用 fluentd がそこそこメモリも EBS も消費してコストになっているので実家のサーバーに移した。たぶん 15 USD くらいの削減。

今後

EC2 は結局便利なので今後もちまちま使うと思う。家にある環境との接続とか考えると VPS めんどくさいので使うつもりはない。大きめのリソースは自宅サーバでどうにかする方針にはしたいが、立て直ししないとなあ。

しかし基本は自宅も含めてサーバーの運用したくないので Serverless かな。2023 年は Serverless 関連の発表が AWS は乏しくて悲しかったけど。

どのみち家計の圧迫している要因の 1 つが片付いたのでよしとします。

Published at