2022年9月13日火曜日

[箇条書き] AWSを見直して、円安に備えよう。




円安の影響を直に受けているのが、AWSですね。

複数プロジェクトが同時に走っていると結構な費用がかさんでしまう。

しかし、本番環境はともかく開発サーバであれば、削れるところは削りたいもの。

特にAWSはとにかく設定項目が細かいので、間違った設定に気が付かずにうっかり無駄な料金を払っていたなんてことがしょっちゅうあります。

チェックすべき大きなポイントを列挙してみました。

細かい設定方法等は他のブログ等を参考にしてくださいませ。


ALB(Application Load Balancer)は兼用が可能


プロジェクトやドメインごとにLoad Balancerを立てる必要などありません。
ALBのリスナーはドメインで判別して、別のポートに送ることができるので、
  • dev.example1.com -> localhost:8080
  • dev.example2.com -> localhost:8081

などの設定を行えば、複数のプロジェクトで一つのALBを使うことができます。

しかしそもそも特に大きなアクセスがあるわけでないので、ロードバランサーなどいらないのでは?と思ったりするのですが、AWSはこれがないとドメインが固定できないので、一応最低一個のALBは必須になってしまいます。

ECSなど従量課金製のものは使用しないときは停止する。


ECS等の従量課金制のサービスは使用しないときは停止すればそれだけ安くなります。

しかしながら、ECS等自体にはスケジュールによる停止機能などはついていません。

ECSのタスク数を0/1に切り替えるLambdaを作成して、Event Bridgeで起動させるようにしましょう。


NAT Gatewayは最小限に


AWSのサブネットにはPublic, Private with NAT, Privateがありますが、
Private with NATの場合のみ課金が必要になります(NAT Gatewayに対して課金されます)。

これは本番サーバでも言えることですが、本当にそのサービスがPrivate with NATである必要があるのか、Private/Publicで良いのか、より吟味して設定しましょう。

もし外にアクセスしないRDSをPrivate with NATにしてしまっていたりしたら勿体無いです!


ECRのバックアップは必要数だけにとどめよう


ECRレジストリのバックアップは50やそこらにしているのが標準という感じですが、大抵の場合別にgitにも保存されているわけですから、大量に置いておく必要はありません。これも適切な数にしてしまいましょう。

使われてないSecret Managerはないか


細かい話ですが、secret managerは1エントリにつき1ヶ月1$かかります。これも必要のないものは削除してしまいましょう。特に、cloud formationなどで作成後そのままになってしまっているなんてケースも多そうです。

その他


それ以外にも別リージョンで設定したままになっていて気が付かなかったなんてことも結構あります。RDSもプロジェクト終了時に手動で停止したつもりが7日後には自動で起動してしまっていたなんてこともよくあります。Cost Exploerer で時々チェックするようにしてみましょう。