ちょっと話題の記事

AWSの未使用リソースを発見し削除、マルチアカウント時代のコスト削減

AWSマルチアカウント下での利用料金削減方法を考えます
2021.04.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。
ご機嫌いかがでしょうか。
"No human labor is no human error" が大好きな ネクストモード株式会社 の吉井です。

みなさま、AWS 利用料金の削減はどのように行っていますでしょうか?
過剰なスペックを見直す、RI/SP、Spot Instance などの割引制度を使うなど色々ありますが
一番てっとり早く削減効果を出せるのは 使っていないリソースを削除すること だと考えます。

管理している AWS アカウント数が少なければ Trusted Advisor や Billing からチェックすることが可能ですが、アカウント数が増えてくるとこの方法だと厳しくなります。

nOps を使うと AWS 利用料金を可視化しながら未使用リソース削減が簡単に実現できそうなので試してみました。

nOps セットアップ

nOps のセットアップはこちらのエントリを参照ください。
難しくないです。

なお、nOps は以下の通り費用がかかります。
コスト削減に期待する金額が nOps に支払う金額を超えないようご注意ください。

  • $99/month for up to $10K of monthly AWS usage.
  • 2.5% of monthly AWS usage for greater than $10K of monthly AWS usage.

nOps を使用した未使用リソースの削除

セットアップが完了した前提で画面を見ながら未使用リソースを探して削除していきたいと思います。
当エントリで試した nOps は3つの AWS アカウントを登録しています。

Cost Dashboard

nOps の Cost Dashboard を開きます。
図内にコメントしています通りの項目が一元的に表示されます。

Unused Resources 画面

Unused resources の右側にある矢印をクリックしてみます。
次の画面に遷移しました。
私は重大なミスをしており EBS ボリュームの削除を忘れていました。
4つの「Unattached EBS」が表示されています。
画面から確認する限り5つの未使用リソースをピックアップしてくれるようです。

  • Unused EIP
  • Unattached EBS
  • NAT Gateway
  • Stopped EBS
  • Unused ELB

Resource Details

上図の RESOURCE の右にある「斜め上に矢印が向いたアイコン」をクリックします。
Resource Details が小窓に表示されます。
リソースが作成された日や当月発生している利用料金、リージョンなどが確認できます。

Cost History タブ

Cost History タブを開くと日毎にどの程度の利用料金が発生しているか確認可能です。
今回表示している EBS ボリュームは gp2 8GB なので僅かな料金ですが、
これが大きなボリュームだと思うと冷や汗が出ます。

AWS マネジメントコンソールへの誘導

View resource on AWS Console ボタンをクリックすると AWS マネジメントコンソールが開きます。
ログインしている状態であれば以下の通り対象リソースを検索した状態になる親切設計です。
削除するなりスナップショットを取得するなりの対処を行ってください。

全体的に見たい

nOps には AWS Well-Architected Framework 観点で AWS アカウントをチェックしてくれる「nOps Rules」という機能があります。
そちらを利用して AWS アカウント全体的にコストを見たいと思います。

下図のように登録した AWS アカウント全てに対して使用していないリソースや使用率が低いリソースを洗い出し、削減可能なコストを算出してくれます。
全アカウント、全リージョンの状態を確認できるので大量の AWS アカウントを管理している方には大きな魅力ではないでしょうか。

執筆日時点で確認できるコストに関わるルールは以下です。

  • Disabled autoscaling DynamoDB tables
  • Infrequently accessed EFS resources
  • Infrequently accessed S3 buckets
  • Low traffic AWS EC2 instances
  • Review EC2 instance size
  • Review RDS instance size
  • Review S3 storage class
  • Underutilized (<10%) AWS ECS cluster
  • Underutilized (<30% capacity on avg for last week) EC2 instances
  • Underutilized (<30% read/write) DynamoDB tables
  • Underutilized AWS CloudWatch Log Group
  • Underutilized AWS EBS provisioned IOPS
  • Underutilized AWS RDS provisioned IOPS
  • Unused AWS EBS volumes
  • Unused AWS ELB resources
  • Unused AWS Elastic IP (EIP) resources
  • Unused AWS NAT resources

ドリルダウン

nOps Rules でもドリルダウンして細かく見ていくことが可能です。
前述した手順と同じようにマネジメントコンソールへの誘導もされています。

まとめ

マルチアカウントが当然の時代です。
アカウントが少量だった頃はコストコントロールもそこまで手間ではなかったですが、大量のアカウントを保持していて、さらにリソース管理は利用者に任せているようなケースだと統制が効きにくく望まない利用料金増加を招いてしまう可能性があります。
視覚的に一覧表示が可能で、かつ、利用料金が発生しているリソースまで特定できていれば、管理はとても楽になるのではないでしょうか。
是非この機会に nOps をお試しください。

参考

nOps
Understanding Networking Costs in AWS: Data Transfer Costs by Usage Type
Avoiding Bill Shock — How to Detect and Mitigate AWS Cost Anomalies
設計、コスト、セキュリティをまとめて最適化出来る「nOps」を触ってみました。
nOpsを使ってWell-Architectedレビューを実施する
nOpsを使って使用中のAWSリソースを確認、不要なリソースを特定する

以上、吉井 亮 がお届けしました。