株式会社AppBrewの@anoworlです。これは「💰 AWSの費用削減 💸 Advent Calendar 2020」3日目の記事です。
さて今回のテーマは「AWS コスト削減初めの一歩」です。
これまで私はいくつかの会社でインフラの運用とコスト削減を行ってきました。会社の規模は様々ですが、まず一番最初にやることは同じでした。
この記事では効率の良い適切なコスト削減にあたって、私がまず一番最初にやるべきだと思う「現状把握」の手順について説明します。
1. 請求書を見る
AWSにはBudgetsやCost Explorer、あるいはSaving Plansだったり、色んなコスト削減のためのツールがあるのですが、初めの一歩はシンプルで良いと私は思っています。
それは前月の請求書を見ること。
AWSの請求書は、各サービスの何にいくらかかっているかの情報が綺麗にまとまっており、これを見るだけで費用構造を概観することが出来ます。
ここで何にいくらかかっているかを知ることで、優先順位を付けて調査が開始できます。
時を戻すことは出来ないので、最初から何から何までやろうとするより、とにかく始めるのが先決です。
2. 費用の種別を確認する
1で金額が大きかったサービスをブレイクダウンして見てみましょう。請求書で折りたたまれている部分を展開すると、詳細に確認することが出来ます。
個々の項目に関してはAWSのドキュメントに詳細が載っています。例えば弊社の請求書から一つ例を挙げると、"CloudFront -> Japn -> Amazon CloudFront JP-Requests-HTTPS-Proxy"という項目については、Googleで検索してみるとAWSのドキュメントが引っかかります。
CloudFront の AWS 請求書と AWS 使用量レポートの解釈 - Amazon CloudFrontを見ると、"ウェブディストリビューションのみ: CloudFront によってオリジンに転送される HTTPS DELETE、OPTIONS、PATCH、POST、PUT リクエストの数"とあるので、これはGET以外のリクエストに対してリクエスト数に応じてかかる値段だということが分かります。
このように調べることで、どのサービスの何にいくらかかっているのかが、明瞭になります。
3. "何に"かかっているのか見る
請求書上の表示だと、S3でどのような消費に対していくらかかっているのかは分かっても、どのバケットでお金がかかっているかは知ることが出来ません。では、より詳しく見るためにはどうしたら良いのでしょうか?
ここで3つの方法をご紹介します。
1. コスト配分タグを使う
EC2にしろS3にしろ、色んなAWSのサービスにおいて、リソースに対しタグを付けることが出来ます。こうして作ったタグをコスト配分タグとして使用することで、Cost Explorerでタグ毎に見ることが出来ます。
S3においては公式の「Amazon S3 バケットのコストを確認する方法を教えてください。」にある手順をなぞるとやりやすいです。
なおEC2についてはAWS Cost Explorerのオプションに「時間単位とリソースレベルのデータ」というものがあります。
2. 使用状況レポートを使う
ちょっと奥まった所にあり見つけづらいのですが、AWS のコストと使用状況レポートでは設定することで、CSV形式で任意の単位時間あたりの料金をリソース毎に見ることが出来ます。よりデータを詳細に見たい場合に有用です。
3. CloudWatchを使う
AWSのサービスはデフォルトで色々なメトリクスがCloudWatchに送られていることが多々あります。S3においてもバケット毎のサイズやファイル数はデフォルトで記録されています。
これらの情報を請求書と突き合わせることで、何がコスト発生源となっているのか突き止めることが出来ます。
おわりに
コスト削減においても、まずは計測です。この記事ではその計測の入口と、それをブレイクダウンして調査する方法を説明しました。
これをやると「なんとなく料金が高い」から「ここでこう料金がかかっている。だから高い」に認識がレベルアップします。
あとはその認識に基づいて、仮説検証を繰り返していけば、コスト削減の達成です。データに基づいたコスパの良いコスト削減ライフを満喫してください!
We are hiring!
コスト削減でも仮説検証を回していきたい方、どうぞ!