概要
FinOpsエージェントはどういったAWSサービスにアクセスしてコスト情報を分析するのか。AWSのコストに関するサービスが沢山あるので、各種振り返りながら記載します。
IAMロールの構成
FinOpsエージェントを有効化する際、2つのIAMロールを作成します。1つはFinOpsエージェントが各種リソースにアクセスするためのIAMロール、もう1つはユーザーが利用するOperator Web Appを動作させるための管理・操作ロールです。
これはDevOpsエージェントのアクセスの仕組みと同様です。DevOpsエージェントのアクセス制御の仕組みはこちらにまとめましたので参照ください。
FinOpsAgentAgentPolicyの権限
ここでは、1つ目のIAMロール(FinOpsエージェントが各種リソースにアクセスするためのロール)を確認しつつ、FinOpsエージェントがどういったサービスから情報を取得するかを確認します。
こちらに記載のあるFinOpsAgentAgentPolicyの権限を見ていきます。アクセスするサービスの一覧は下記の通りです。
| # | サービス | IAMプレフィックス |
|---|---|---|
| 1 | AWS Cost Explorer | ce: |
| 2 | AWS Budgets | budgets: |
| 3 | Cost Optimization Hub | cost-optimization-hub: |
| 4 | AWS Compute Optimizer | compute-optimizer: |
| 5 | Amazon EC2 | ec2: |
| 6 | Amazon ECS | ecs: |
| 7 | Auto Scaling | autoscaling: |
| 8 | AWS Lambda | lambda: |
| 9 | AWS Organizations | organizations: |
| 10 | Amazon RDS | rds: |
| 11 | AWS Pricing | pricing: |
| 12 | AWS Free Tier | freetier: |
| 13 | AWS Billing and Cost Management Pricing Calculator | bcm-pricing-calculator: |
| 14 | AWS CloudTrail | cloudtrail: |
| 15 | Amazon CloudWatch | cloudwatch: |
| 16 | Amazon CloudWatch Logs | logs: |
| 17 | Amazon EventBridge | events: |
大きく分けると下記4つの区分に分かれます。
- コストデータの照会・分析 — Cost Explorer、Budgetsなど
- 最適化レコメンデーション — Cost Optimization Hub、Compute Optimizer
- インフラ構成の把握 — EC2、ECS、Auto Scaling、Lambda、RDSなど
- コスト異常の原因調査 — CloudTrail
※CloudWatch、EventBridgeなどは割愛
以降、各区分について詳しく見ていきます。
コストデータの照会・分析 / 最適化レコメンデーション
「コストデータの照会・分析」「最適化レコメンデーション」で使用する、Cost Explorer、Compute Optimizer、Cost Optimization Hubを見ていきます。
AWS Compute Optimizer
AWS Compute OptimizerはCloudWatchメトリクスを分析して、リソースの適切なサイジング等、最適化のレコメンデーションを表示します。対象のリソースはこちらに記載の通り、EC2やECS、RDSなどのリソースとなります。
Cost Optimization Hub
Cost Optimization Hubは、AWSアカウント内のコスト最適化のレコメンデーションを横断的に集約表示して、優先順位を付けるのに役立つサービスです。リソースの適切なサイジング、アイドル状態のリソースの削除、Savings Plans、リザーブドインスタンスに関する推奨事項を表示します。
なお、リソースの適正化とアイドル状態のリソースのレコメンデーションについては、AWS Compute Optimizerが一次ソースとして提供しています。対象のリソースはこちらに記載の通り、AWS Compute Optimizerより多いです。
AWS Cost Explorer
AWS Cost Explorerは、コストと使用状況を表示および分析できるツールです。
3つのサービスの関係性
この3つのツールの関係性を具体例で記載します。
- Cost Explorer で先月「EC2コストが500ドル→700ドルに増加した」と確認
- Compute Optimizer で「i-abc123(m5.2xlarge)はCPU平均使用率12%なのでm5.largeで十分」と推奨を確認
- Cost Optimization Hub で「アカウント全体で最もインパクトの大きい推奨はこのEC2ライトサイジングで、年間2,400ドル削減可能」と優先順位付け
インフラ構成の把握
続いて「インフラ構成の把握」です。具体的には下記のような各種リソースに関する読み取り権限が付与されています。
"ec2:DescribeInstances",
"ec2:DescribeVolumes",
"ecs:ListServices",
"ecs:ListClusters",
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeAutoScalingInstances",
"lambda:ListFunctions",
"lambda:ListProvisionedConcurrencyConfigs",
"rds:DescribeDBInstances",
"rds:DescribeDBClusters",
上記の対象サービスはCompute Optimizerの主要な対象サービスと一致しています。FinOpsエージェントが各種リソースの現状を確認し、Compute Optimizerのレコメンデーションを実際のリソースと紐づけるために使用していると考えられます。
コスト異常の原因調査
最後に「コスト異常の原因調査」です。FinOpsエージェントはコスト異常を検知した際、CloudTrailのログを調査してコスト増加の原因となったAPI操作を特定します。
ドキュメントには下記の記載があります。
CloudTrailのアクションは、コスト異常の調査をサポートします。エージェントは、
cloudtrail:LookupEventsを使用して、コスト変更の背後にあるAPIアクティビティを特定します。
コスト異常調査のドキュメントには下記の記載があります。
エージェントは、コスト増加の原因が使用量の増加、料金の上昇、またはその両方によるものかどうかを判断します。CloudTrailのアクセス許可が有効になっている場合、エージェントはCloudTrailのイベント履歴を検索し、コスト変更に関連するAPIアクティビティを特定します。
まとめ
AWSには多くのコスト関連のサービスがあります。これらを横断的に分析できるFinOpsエージェントはコスト最適化にかなり有効であると感じました。


