AWS ソリューションアーキテクトアソシエイト １８

##AWSにおけるコスト管理
AWSではアカウントごとにサービスを利用した分のコストが発生します。
通常、コストの支払い管理は、アカウントの管理者（たとえばIT部門など）が行います。しかし、どの程度利用しているかの詳細把握や、あらかじめ決められた予算を超過していないかの監視、利用部門へのコスト配賦など、コスト管理で行うべきことは多岐にわたります。

【主なコスト管理のタスク】

|タスク|タスク概要|主なAWSサービス|
|---|---|---|
|コストの請求・支払い|複数のAWSアカウントをまとめて支払い管理する|Consolidated Billing(一括請求)|
|コスト状況の詳細把握|コストとリソース使用量の詳細をレポート・分析する|AWS Cost and Usage Report<br>(コストと使用状況レポート)|
|コストの可視化・傾向分析|コストの可視化や深掘り分析、将来予測を行う|AWS Cost ExpLorer|
|過剰利用の監視|予算策定や予算通過のアラートを管理する|AWS Budgets(予算設定)|
|コスト最適化の検討|コスト最適化の余地があるリソースを分析・改善する|AWS Trusted Advisor|

AWSのBilling and Cost Management Dashboardから、上記に代表されるコスト・請求に関わるサービスにアクセスが可能です。
次に各AWSサービスの概要を説明します。

##Consolidated Billingによる支払い管理
**Consolidated Billing**(一括請求)は、複数のAWSアカウントに対する請求を１つに統合し、まとめて支払いできる機能です。「AWS Organizations」と呼ばれる、複数のAWSアカウントを一元管理するサービスの一機能として提供されています。
この機能で、次の利点が得られます。

- 複数のAWSアカウントのコストが１つの請求書に統合されることによる支払い義務の効率化
- 各AWSアカウント（たとえば業務部門・IT部門や開発環境・本番環境など）の使用状況を統合的に把握可能
- 複数のAWSアカウントの使用量を統合することで、ボリュームディスカウントによるコスト削減が可能

以下の図のように、請求先の**マスターアカウント**(Payer Account)に対し、**メンバーアカウント**(Linked Accont)の請求が統合できます。

【Consolidated Billing(一括請求)のイメージ】
```マスターアカウント``` ←全アカウントの費用がまとめて請求される
　　　　　|　　　　←合算された費用に対してボリュームディスカウントの適用が可能
　　　　　|
　　　　　|__ ```メンバーアカウント```
　　　　　|__ ```メンバーアカウント```

##AWS Cost and Usage Reportによる詳細レポート・分析
**AWS Cost and Usage Report**(コストと使用状況レポート)では、AWSのサービスごとのリソース状況とコストを1時間ごとや日次で収集し、CSV形式でS3へ保存、またはRedshiftに格納したり、Amazon QuickSight(QuickSight)で分析・可視化したりできます。
Consolidated Billingを利用している場合は、マスターアカウントのレポートにメンバーアカウントの情報が表示されます。
たとえば、このレポートで取得可能な情報には以下のようなものがあります。

- bill/PayerAccountId:支払いアカウントのAWSアカウントID（Consolidated Billingの場合はマスターアカウントのID）
- product/ProductName:利用しているAWSサービスの名前
- product/region:AWSサービスのリージョン
- lineItem/UsageAmount:指定した期間に発生したリソース使用量

なお、このレポートではオンデマンドインスタンスだけでなくリザーブドインスタンスの利用状況や料金などの情報も取得できるため、定期的に監視・分析することでリザーブドインスタンスの見直しといったコスト最適化のための計画を検討することができます。

##Cost Explorerによるコストの可視化と傾向分析
**AWS Cost Explorer**(**Cost Explorer**)は、先述のAWS Cost and Usage Reportのデータをグラフィカルに可視化したり検索したりできるサービスです。
たとえば、EC2のリソース使用量やコストを時系列にグラフ化し、詳細に分析したい場合はさまざまな条件（サービス別やタグ指定など）や期間を指定してフィルタリング・検索が可能です。
具体的には、以下の３つが提供されています。

###可視化
最大で過去12ヶ月分のコストデータをグラフ表示できます。あらかじめ以下のような可視化グラフが用意されており、簡単に切り替えて表示できます。

- Monthly costs by service:サービスごとの月次コスト推移
- Monthly costs by linked account:AWSアカウントごとのDaily costs
- Daily costs :日次コスト推移
- Monthly EC2 running costs and usage:月次EC2使用時間・コストの推移 
- RI Utilization :リザーブドインスタンスのコスト推移やオンデマンドインスタンスの場合と比較したコスト削減額など

###分析
サービス、AWSアカウント、リージョン、AZ、インスタンスタイプ、タグなどの条件でフィルタリング表示できます。

###予測
可視化や分析だけでなく、過去の使用量のトレンドから今後3ヶ月間のコストを予測することができます。

##予算設定による利用超過の監視
AWSでは、Billing and Cost Management DashboardのBudgetsから予算を作成することができます。
予算額やリソース使用量をあらかじめ設定し、現在どのくらい消費しているかを確認したり、超過時の通知方法を設定したりすることができます。

###予算額の設定
コストやリソース使用量など監視する対象を選び、月次や四半期などのタイミングを指定して監視する予算額や使用量を設定します。

###通知の設定
設定した予算額を超過しそうな場合、または超過した場合にCloudWatchアラームやSNSトピック、メールなどによる通知が可能です。
超過の条件は予算額に対するパーセンテージや実際の消費量（金額）が大きい、小さい、等しいなどさまざまな設定が可能です。

##Trusted Advisorによるコスト最適化
ここまでは、コストの詳細把握・可視化と分析・予測・監視などに使えるAWSサービスを説明しました。
コスト管理に関連する最後のタスクはコスト最適化です。AWSでは、コスト最適化のヒントを推奨するサービスとして、AWS Trusted Advisor（Trusted Advisor）が提供されています。
Trusted Advisorは、AWSのベストプラクティスに基づいて、**コスト最適化、セキュリティ、耐障害性、パフォーマンス、サービスの制限**の5項目でユーザーのAWS利用状況をチェックし、改善すべき事項を推奨するサービスです。

Trusted Advisorのコスト最適化機能では、たとえば以下の観点でコストの診断が行えます。

###使用率の低いEC2インスタンス
少なくとも過去１４日間、常に稼働しているEC2があり、1日のCPU使用率が10%以下、かつネットワークI/Oが５MB以下である日が4日以上ある場合にアラートします。
使用率が低いEC2インスタンスに対し、インスタンス数やインスタンスサイズを調整することでコスト削減が可能です。

###EC2リザーブドインスタンスの最適化
前月の1時間ごとのEC2使用量に基づいて、リザーブドインスタンスの最適数を推奨します。
推奨されたリザーブドインスタンス数を購入することで、少なくともEC2使用料金の10%を節約可能となります。

###関連付けられていないElastic IPアドレス（EIP）
稼働中のEC2インスタンスに関連づけられていない**EIP**をチェックします。
EIPに課金が発生するため、EC2インスタンスへ割り当てられていないEIPや、割り当てられていてもEC２インスタンスが停止中の場合には、使用していないEIPを解放することでコスト削減が可能です。

これ以外にもELBやEBS、RDSなどのサービスについても、使用状況などからコスト最適化の診断を行うことができます。