【AWSコスト削減】まずこれ見て！サクッとコスト削減できること

「今月もAWS利用料高いなー」
「よし。コスト削減しよ！」
「まず、このシステムは何にコストがかかっているのか分析からしよーっと」

その後、利用状況調査＆削減案検討・・・:zzz:

その時間に（小銭レベルかもですが）**サクッとコスト削減できることがある**かもしれません！

私が以前、職場で整理した「***難易度別！AWSコスト削減案***」を記事化しました。
少しでも皆様のお役に立てればと思います。

:::note warn
DBリアーキのような大きなシステム改修はスコープ外です。
あくまで1,2カ月くらいでサクッと実装できるものに絞っています:bow_tone1:
他にも「うちではこれやった！」があったら教えていただけると嬉しいです！
:::

## 【難易度：★】不要リソース削除
まずはここから:point_up:
意外にゴミがたまっているかもです！
私が担当しているシステムでは約1万円/月の削減をすることができました（お恥ずかしながら:sweat_smile:）

#### 具体例
・不要ファイルの削除
・不要(未使用)AMIの削除
・不要EBSスナップショット/ボリュームの削除
・不要VPCエンドポイント
・不要EIPの削除

#### ポイント
・コード化していない場合、不要AMIは下記のように
　**実行中インスタンスに紐づくAMI IDとAMIコンソールを突合させる**と簡単に判別できます！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611811/31a2d8a2-2e88-ce58-5943-0f5b52a1863f.png)

・EBSはまず**実行中EC2にアタッチされているか**確認しましょう！
　下記のようにどこにもアタッチされていなくてもEBS料金はかかっています:money_with_wings:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611811/6c86a29d-3e96-89b2-1366-ee56dc7d7cd2.png)
　あとは、EBSボリュームとスナップショットを突合させて、不要な世代分のスナップショットを削除しましょう


## 【難易度：★★】スケールイン/スケールダウン
今、リソース(CPU/メモリ等)に余裕ありませんか？

EC2などのコンピューティングサービスは割と利用料高いので
見直し可能なら削減効果大です:fireworks:

#### 具体例
・EC2など稼働台数の見直し
・インスタンスタイプの見直し

#### ポイント
「AWS Compute Optimizer」を利用すると過剰リソースを把握することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611811/d608bc07-bbbb-259d-8b74-fcd0ad822abb.png)


## 【難易度：★★★】開発環境の夜間/休日停止
サービス提供している環境とは別の「開発環境」をお持ちのシステムは、
是非こちらも検討してみてください。
24/365で開発するPJでなければ、**使っていない時間はインスタンス等を停止**することで大幅な削減が見込めます！（絶対。たぶん。）

また、下記<ポイント>で詳細載せますが、
手動で停止起動すると開発チームの稼働が増え、ハレーションを生む可能性があるので自動化しすることをオススメします:fist:

#### 具体例
・EC2/RDSなどの夜間休日停止
・ECSタスクの夜間休日停止

#### ポイント
自動停止起動はいろいろ方法がありますが、
本記事では「Amazon EventBridge＆SSM Automation」を使ったEC2自動停止起動をご紹介します。

##### ① SSM Automation Document作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611811/a836cddb-f33c-cd1f-1379-2f630f407c6c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611811/2d06d164-e3dd-26d8-9b9b-13cfbc33c4eb.png)

##### ② Automation実行用ロール作成
Amazon EventBridgeがSSM Automationを実行できるようにロールを作成する必要があります。
私が作成したロールは別要件で使用するポリシーも含んでいるので、下記を参考に作成してみてください。
https://dev.classmethod.jp/articles/iam-role-for-ssm-automation/

##### ③ Amazon EventBridgeルール作成
最後にEventBridgeルールの作成です。
①②で作成したリソースと紐づければ自動停止起動の完成です！
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611811/f19aa629-d5ea-1025-8f78-98513379e2d7.png)
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611811/2b7c475a-435f-9b34-f9c1-afb4985967c3.png)


## 【難易度：★★★】軽微なリアーキ/設定の見直し
大規模なリアーキだと検討/実装に多くの時間を要するので、
ここではサクッとできる軽微なものをご紹介します。

#### 具体例
・VPC Flowlogsの出力先変更(CloudWatch Logs → S3)
・ログ出力設定変更(debug → infoなど)
・CloudWatch Logsのログ保持期間変更

#### ポイント
・VPC Flowlogsの出力先には
　　① CloudWatch Logs
　　② S3
　　③ Kinesis Firehose
　があり、②のほうがAWSコストが安くすみます！
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611811/dfa84624-9f42-87b5-ff0a-6a69966e4617.png)
　※またS3のライフサイクル設定もお忘れなく:thumbsup:

・CloudWatch Logsのログ保持期間変更もパパっとできて地味に効果ありです！
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2611811/86c32e86-5296-d383-c4f9-b4790d0c3aff.png)

## おまけ
Datadogでリソース監視している方向けになってしまいますが、
CloudWatchの請求書に**身に覚えのないリージョンの料金**が表示されていますか？
もし、表示されている場合はDatadog側のリージョン設定を変更すれば削減できます:open_mouth:
https://qiita.com/yoshiteru-takeshita-lvgs/items/12785b89d948221d9c6a

## さいごに
コスト削減活動には**利用状況調査/分析**、**削減案検討/実施**など多くの時間と労力がかかります。

あくまで尾崎流（自論）ですが、初のコスト削減活動は
「**まずは大物を狙わず、サクッとできるものからやる**」
これが<INS>初のコスト削減活動のコツ</INS>です！

ここでいう大物とは「削減額は大きいがシステム改修規模も大きいもの」を指していて、
構成検討や内部調整に多くの時間と突破へのハードルがあります。
しかも、時間をかけた結果「費用対効果がない:raised_hand:」の一言で・・・・ってこともありえます。

なので、<INS>**サクッと確実に実装できる**</INS>**ものをやり切ったら大物を狙う**のがオススメです！

この記事を見て少しでも皆さんのコスト削減活動のお役に立てられていれば幸いです:relaxed: