今日から始めるAWSのコスト最適化(3)

2024.02.15
マルチクラウド 技術 AWS クラウド活用 コスト削減 コスト最適化
今日から始めるAWSのコスト最適化(3)

はじめに

こんにちは。技術本部 アーキテクチャ&テクノロジー部の髙橋 洋樹です。AWSのコスト最適化について、複数回に渡ってご紹介している本ブログシリーズ。前回前々回では、6つのコスト最適化方法をご紹介しました。まだお読みでない方は是非、ご覧ください。

さて、今回は本テーマの最終回として、コストの最適化を継続的に実施していくために重要な「Ⅲ.計画・予測」の具体的な方法についてご紹介していきます。

計画・予測をするには

継続的なコスト改善に向けて、今後の計画を策定し、コスト変動を予測していくために重要なポイントを2点ご紹介していきます。

  1. アラートによる現状の管理
  2. タグ付け戦略の計画

1. アラートによる現状の管理

AWS Budgetsを利用することで事前に定義した予算に段階的な閾値を設定し、閾値を超えるたびにEメールまたはSNSでアラート通知することが可能です。アラートを設定する上で大事なのは、アラートが来た場合に誰がどのような判断基準で対応有無を決定するかを明文化し、基準を時間とともに見直していくことです。アラートが簡単に設定できるのをいいことに対応の必要のないアラートまで大量に受け取っていては、いざ重要なアラートが来た場合に埋もれてしまいます。

また、AWS Cost Anomaly Detectionを利用することでもアラートを通知することが可能です。こちらは機械学習によって支出が異常であると判断され、かつ閾値を上回った場合に通知が飛びます。このサービスを利用する上で肝となるのが閾値の設定です。異常が発生したかどうかは平時の利用パターンを元に機械が自動検出しているため利用者側では制御できません。例えば普段$1しか使っていないサービスを$2使った場合でも、異常値として検出される可能性があるため、それを通知するかどうかを制御する利用者側の機構が閾値になります。閾値は固定値(米ドル)またはパーセント、もしくは固定値とパーセントの組み合わせ(AND/OR両方可能)から選択できます。例えば、閾値を$0.01などに設定していると機械学習で異常と検出されたものすべてが通知されてしまうので、閾値を見直し誤った通知を減らしていくことが肝要です。

2. タグ付け戦略の計画

以前「Ⅰ.可視化」についてご紹介したブログ内で、コストを集計するためにリソースにコスト配分タグを付与することをお勧めしましたが、リソースに漠然とタグを付与していたのでは期待する効果は得られません。コスト配分タグの活用を実運用に耐えられるレベルにするためには、タグ付けを戦略的に計画することが必要不可欠です。戦略を立案する上ではAWSから公開されているベストプラクティス(英語)が有効です。具体的には4つのプロセスを反復・改善をしていくことが必要です。

プロセス 取り組み概要
ニーズとユースケースの特定 利害関係部門に働きかけ、ユースケースに基づいて必要となるタグのキーや、その値の範囲等を定義する。タグ付けのアプローチを関係部門と合意したら文章化する。
定義と公開 付与すべきタグの一覧やその用途などを、バージョン管理されたリポジトリで公開し全ての関係者がアクセスできるようにする。
実行と強制 タグ付けを実行する。必要に応じてシステム的に付与を強制、もしくは自動化する。
測定と改善 タグ付けの有効性をユースケースに基づいて評価し、必要に応じて改善する。

戦略立案の全体像を学びたい方はAWSが公開している上述(英語)の解説ページを参照いただくとして、ここでは特に技術的な説明の補足として、「実行と強制」のプロセスに関わる下記3つの重要な機能についてご紹介していきます。

  • (1)AWS Config Rule
  • (2)タグポリシー(AWS Organizations)
  • (3)サービスコントロールポリシー/SCP(AWS Organizations)

(1)AWS Config Rule

AWS Config Ruleはルールに沿っていないリソースを自動で検出します。この「required-tags」というビルトインのルールを利用することで、指定のタグが付与されていないリソースを検出することができます。評価は設定変更をトリガーとして随時行われるので、ルールの逸脱を検出したら即座にチャットツールに通知することで利用者に即座に是正を促すことができます。また、コーディングが必要にはなりますが、AWS Lambdaでタグを自動付与することも可能です。

タグを自動付与する場合、注意点が2つあります。1つ目はIaCとの相性が良くない点です。IaCはコードの状態が環境の状態と一致していることが望ましいため、コード外で設定変更が加わるこのような仕組みとは相性が悪いです。2つ目は利用者のタグ付けに対する意識が高まりにくい点です。多くの種類のリソースに対応し続けるようなLambdaを構築・運用するには相当なコストがかかります。リソースの都合から、「自動修復」に期待をしたくなりますが、自動化のデメリットや業務実態を鑑みながら、自動修復の要否は慎重に判断していくべきだと思っています。

(2)タグポリシー(AWS Organizations)

これはAWSのリソースに付与するタグの標準化を支援する機能で、主にタグの入力間違いを防ぐことを目的としています。例えば、「タグ大文字小文字コンプライアンス」はタグのキーの大文字小文字を制御する機能です。「Name」という値を登録しておくと、配下のAWSアカウントで「name」だったり、「NAME」のような大文字と小文字が異なるタグの作成を配下のアカウントで防止することができます。また、「タグ値コンプライアンス」では特定のタグキーに入力可能な文字を定義することができます。仮に「Env」をキーとするタグがあった場合、「dev」、「prd」以外は入力させないようにすることが可能です。

(3)サービスコントロールポリシー/SCP(AWS Organizations)

SCPは特定の操作(アクション)をAWSアカウント全体で禁止することが可能な機能です。ですので以下のようなSCPを定義しておくことで指定のタグが付与されていないEC2インスタンスの作成をAWSアカウント全体で禁止することができます。

ちなみに、SCPを利用する際も注意点があります。全てのアクション(サービス)がタグベースのアクセス制御に対応しているわけではないという点です。つまり、タグベースの制御に対応していないアクション(サービス)は、そもそもSCPによる制御ができないため、SCPの利用が要件に合致するかをよく確認して利用するようにしましょう。対応の有無はAWS のサービスのアクション、リソース、および条件キーのページから確認できますので、そちらも併せて参照してみてください。

まとめ

今回はAWSのコストを計画・予測していく方法について紹介しました。何かのご参考になれば幸いです。
今回の「コスト計画・予測」に必要となるアラート設計やタグ付け戦略の策定は、業務知見・経験が特に必要となる領域であることに加え、短期的なコスト削減効果を生むわけではないこともあって後回しになりやすい業務だと感じています。そのようなお客様の課題感を受けて、当社ではAWSのコスト可視化・削減サービスや運用サービスを提供しており、お客様のご利用環境やニーズに合わせてコスト最適化をご提案することが可能です。こちらも是非お気軽にご相談ください。
今後もAWSに関するアイディアを発信していきますので、是非また別のトピックでお会いしましょう!

関連ページ

おすすめブログ

今日から始めるAWSのコスト最適化(1)
今日から始めるAWSのコスト最適化(1)
コストの最適化にあたっては、Ⅰ. 可視化、Ⅱ. 最適化、Ⅲ. 計画・予測というプロセスを定常的に実施することが必要だと考えています。今回は「Ⅰ. 可視化」についてどのような方法があるのか、直近のアップデートやベストプラクティスを踏まえながら紹介します。