Amazon EC2 のコンソール画面を眺めていると、"New"と書かれた「Capacity Manager」がありました。

調べてみると、「Amazon EC2 Capacity Manager」は昨年 10 月に一般提供(GA)されたようです。
「お客様がすべてのアカウントとリージョンの EC2 キャパシティを監視、分析、管理できる」と書かれていますが、可視化できる情報の内容次第では、棚卸にも役立ちそうですよね。
今回の記事では、"Amazon EC2 Capacity Manager" についての概要と利用開始方法、出力されるデータについて紹介します。
1. EC2 Capacity Managerとは?
1-1. どんな機能?
発表された内容を読むと、次のように説明されています。
EC2 Capacity Manager では、お客様のアカウントとリージョンのオンデマンド、スポット、キャパシティ予約の使用状況を包括的に把握できます。この新サービスの特徴は、全体的なインサイトを提供しながら、お客様が必要に応じて特定の詳細を掘り下げることができるダッシュボードとグラフです。これらの詳細には、お客様が時間の経過に伴うキャパシティパターンをより良く理解するのに役立つ過去の使用傾向、情報に基づいたキャパシティ決定を導く最適化の機会、これらのインサイトを実装するためのワークフローが含まれます。ユーザーインターフェイスと API が更新されているだけでなく、EC2 Capacity Manager ではお客様がデータをエクスポートして既存のシステムと統合できます。
Amazon EC2には購入オプションが複数あるため、それらを横断して一括で見えるようになるのはありがたいですね。
機能の方向性としては、EC2の棚卸に加えて、購入オプション最適化(コスト最適化)にも使えそうです。
1-2. できること
では、"Amazon EC2 Capacity Manager" では具体的に何ができるのでしょうか。
公式ドキュメントを見ると、以下の機能が提供されていると説明されています。
- 一元化されたダッシュボード: 1 時間ごとに更新される新しいデータポイントを使用して、すべてのアカウントとリージョンのキャパシティ使用状況を表示
- クロスアカウントの可視性: 管理者アカウント向けの組織レベルのビュー
- データエクスポート: キャパシティデータを Amazon S3 にエクスポート
- API: キャパシティメトリクスとデータへのプログラム的なアクセス
- 柔軟な分析: 過去 90 日間からのさまざまな期間全体でキャパシティ使用状況を調べるための動的な日付セレクター
- 包括的なメトリクスとディメンション: 複数の測定単位 (vCPU、インスタンス、推定コスト) にまたがる 30 個を超えるメトリクスと、アカウント ID、リージョン、インスタンスファミリー、アベイラビリティーゾーン、インスタンスタイプ、プラットフォーム、テナンシー、予約固有のディメンションなどの広範なフィルタリング機能にアクセス
アカウント単位ではなく組織単位で確認できるのは便利そうです。
さらに、データをS3にエクスポートできるため、取得したデータから月次・年次で傾向を追いかけるといった使い方もできそうです。
2. 使ってみた
それでは実際に、"Capacity Manager"を使ってみます。
2-1. 前提
"Capacity Manager"を利用開始するうえで、以下が前提となります。
- EC2の利用があるアカウント
2-2. 設定方法
今回は、単一アカウントかつ特定のリージョンでのみ有効化してみます。
Amazon EC2の左ペインから[ Capacity Manager ]をクリックします。
↓[ アカウントレベル ]で設定し、[ eu-west-1で有効化 ]をクリックします。

↓[ Capacity Managerが正常に有効化されました ]と表示されれば設定完了です。

↓私の環境では2時間後に[ 取り込みステータス ]が[ Ingestion-complete ]となり、準備ができた状態になりました。

↓

2-3. 画面での見え方
どのような内容が確認できるか見てみます。
↓"ダッシュボード"を見てみます。

↓

↓

↓

予約やスポットで利用しているEC2は別枠で見えるかされていますが、オンデマンドは"未予約"として見てみるしかなさそうですね。
2-4. データエクスポート設定
"Capacity Manager"で収集されたデータは、S3に出力することができます。
↓まずはデータの出力先として設定するS3バケットのバケットポリシーを設定します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.capacitymanager.amazonaws.com"
},
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<バケット名>",
"arn:aws:s3:::<バケット名>/*"
],
"Condition": {
"StringEquals": {
"aws:SourceAccount": "<アカウントID>"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:ec2:eu-west-1:<アカウントID>:capacity-manager-data-export/*"
}
}
}
]
}
設定しないと、データエクスポート設定時にエラーがでます。
Can't access the S3 bucket. Verify bucket permissions and ensure the service has required access.
↓[ Capacity Manager ]の画面から[ データエクスポート ]タブをクリックし、[ データエクスポートを作成 ]をクリックします。

↓[ エクスポートの配信場所 ]でデータの出力先S3バケットおよびキーを設定します。

↓[ データエクスポートが正常に作成されました ]とメッセージが表示されれば完了です。

2-5. 出力されたデータ
出力されたデータを見てみます。
↓設定完了後、3時間後くらいに最初のデータが出力されました。

↓中身はこんな感じです。
MetricGroupName,PeriodStartTimestamp,PeriodEndTimestamp,OrgID,AccountID,Region,AZ-ID,InstanceFamily,InstanceType,Platform,Tenancy,ReservationID,Reservation Arn,UnusedFinancialOwner,ReservationType,InstanceMatchCriteria,ReservationCreateTimestamp,ReservationStartTimestamp,ReservationEndTimestamp,ReservationEndDateType,ReservationState,ReservationTotalCapacityHrsVcpu,ReservationTotalCapacityHrsInst,ReservationTotalEstimatedCost,ReservationMaxSizeVcpu,ReservationMaxSizeInst,ReservationMinSizeVcpu,ReservationMinSizeInst,ReservationUnusedTotalCapacityHrsVcpu,ReservationUnusedTotalCapacityHrsInst,ReservationUnusedTotalEstimatedCost,ReservationMaxUnusedSizeVcpu,ReservationMaxUnusedSizeInst,ReservationMinUnusedSizeVcpu,ReservationMinUnusedSizeInst,ReservationMaxUtilization,ReservationMinUtilization,ReservationAvgUtilizationVcpu,ReservationAvgUtilizationInst,ReservationAvgFutureSizeVcpu,ReservationAvgFutureSizeInst,ReservationMaxFutureSizeVcpu,ReservationMaxFutureSizeInst,ReservationMinFutureSizeVcpu,ReservationMinFutureSizeInst,ReservationAvgCommittedSizeVcpu,ReservationAvgCommittedSizeInst,ReservationMaxCommittedSizeVcpu,ReservationMaxCommittedSizeInst,ReservationMinCommittedSizeVcpu,ReservationMinCommittedSizeInst,ReservedTotalUsageHrsVcpu,ReservedTotalUsageHrsInst,UnreservedTotalUsageHrsVcpu,UnreservedTotalUsageHrsInst,ReservedTotalEstimatedCost,UnreservedTotalEstimatedCost,SpotTotalUsageHrsVcpu,SpotTotalUsageHrsInst,SpotTotalEstimatedCost,SpotAvgRunTimeBeforeInterruptionInst,SpotMaxRunTimeBeforeInterruptionInst,SpotMinRunTimeBeforeInterruptionInst,SpotTotalInterruptionsInst,SpotTotalInterruptionsVcpu,SpotTotalCountInst,SpotTotalCountVcpu,SpotInterruptionRateInst,SpotInterruptionRateVcpu
Instance Usage,2026-02-28T16:00:00.000Z,2026-02-28T17:00:00.000Z,,xxxxxxxxxxxxxx,us-west-2,usw2-az1,t3,t3.micro,Linux/UNIX,default,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.0,0.0,2.0,1.0,0.0,0.0104,,,,,,,,,,,,
オンデマンドで一台稼働しているだけなので、データ自体は全然なかったですね。
まとめ
"Capacity Manager"を使ってみた印象として、アカウント(または組織)配下で稼働しているEC2 の購入オプションを見える化できるため、無駄の削減につなげられそうだと感じました。
日々の運用で常時見るというより、半年ごと・年次などのタイミングで棚卸しし、計画に反映していく用途が向いていそうです。
参考リンク:AWS公式ドキュメント
↓ほかの協栄情報メンバーもAmazon EC2についての記事を公開しています。ぜひ参考にしてみてください。
■KMSで暗号化されたAMIを他アカウントで起動してみる(齊藤弘樹)
■AMIをアカウント間で共有する方法(齊藤弘樹)
■想像と違った”AMI Usage” ~運用で使えるようにスクリプト化してみた~(齊藤弘樹)


