[アップデート] EC2 Capacity Managerが登場しEC2のオンデマンドインスタンス、スポットインスタンス、キャパシティ予約の状況を一元的に管理できるようになりました
コンバンハ、千葉(幸)です。
オンデマンドインスタンス、スポットインスタンス、キャパシティ予約、といった各種キャパシティデータを統合ダッシュボードで一元管理できるソリューション、EC2 Capacity Managerが発表されました。
アカウントやリージョンを横断して、以下のような情報を提供してくれるとのことです。
- 利用率の低いキャパシティー予約のハイライト
- インスタンスタイプごとの使用パターンの分析
- スポットインスタンスの中断パターンに関するインサイト
公式ドキュメントはこちらです。
EC2 Capacity Manager - Amazon Elastic Compute Cloud
EC2 Capacity Managerはどんな時に役立つ?
大規模、特に複数アカウントでスポットインスタンスやキャパシティ予約を管理している環境で役立ちそうです。
ここで言っている「キャパシティ予約」とは、以下の両方を指します。
-
オンデマンドキャパシティ予約(ODCR)
-
キャパシティブロック for ML
参考:On-Demand Capacity Reservations and Capacity Blocks for ML - Amazon Elastic Compute Cloud
EC2 Capacity Managerの発表の前日に、以下の日本語ブログがリリースされていました。(タイミング的に少し思惑を感じてしまいます。)
マルチアカウントにおけるODCR管理に関するブログです。複数アカウント間で効率的にODCRを活用するための方式が紹介されています。
このブログの詳細は今回の本質ではないので割愛しますが、複数アカウントで管理するからには各アカウントの状況をAPIなりで取得するなど、それなりの苦労がありそうです。そんな環境で一元的に管理できるダッシュボードがあると捗るのではないでしょうか。
リザーブドインスタンスやSavings Plansと何か関連する?
直接的には関係しなさそうです。ダッシュボードで集計できるのは主にキャパシティ予約とスポットインスタンスに関連する情報で、そこに付随してオンデマンドインスタンスの情報も取れる、という肌感覚です。
これらの情報をもとにリザーブドインスタンスやSavings Plansの購入の際の検討材料にする、という間接的な使い方はできるかもしれません。
EC2 Capacity Managerの機能/仕様まとめ
ざっと気になるところをまとめてみました。
- 利用に料金はかからない
- 有効にできるのはアカウントごとに1つのAWSリージョンのみ(すべてのリージョンの情報が収集される)
- 初期セットアップ時には過去14日間分の履歴データを収集する
- 初期セットアップには数時間かかる
- 1時間ごとにデータを更新する
- 集計対象として遡れる期間は過去90日
- 使用されるサービスリンクロールは
AWSServiceRoleForEC2CapacityManager
- 信頼されるサービスプリンシパルは
ec2.capacitymanager.amazonaws.com
- 与えられているパーミッションはOrganizationsの参照系の権限
- 信頼されるサービスプリンシパルは
- 有効化は「アカウントレベル」か「Organizationsレベル」のいずれかで実施できる
- ダッシュボードでは独自のメトリクスをグループ化/フィルタリングして表示できる
- データをS3にエクスポートできる
- 集計対象に専有ホストは含まれない
EC2 Capacity Managerを有効化してみた
さっそくEC2 Capacity Managerの有効化を行います。
リージョン単位での有効化になります。今回は東京リージョンでやってみます。
AWSマネジメントコンソールのEC2画面から「Capacity Manager」に遷移します。
有効化の際には「アカウントレベル」か「Organizationsレベル」かを選択します。後者を選択できるのは組織の管理アカウントか、委任された管理者アカウントのみです。
今回は「アカウントレベル」で有効化を実施します。
有効化が成功した、というメッセージが画面上部に表示されました。
Capacity Manager was successfully enabled
We're preparing your data, which may take a few hours. You can configure settings while you wait.
初期セットアップにはa few hours(2~3時間)かかる旨が示されています。
かわいいな。名前は何て言うの?
👆このワンちゃんが見れるのは有効化直後だけのようなので、この機会にたくさん写真を撮っておくといいでしょう。
初期セットアップ中も操作できる「Settings」タブはこのような内容でした。
「Ingestion status」がInitial-ingestion-in-progress
となっていますね。
1時間と少し経つと画面が見えるようになりました。ただ、ステータスは変わらずInitial-ingestion-in-progress
です。引き続き待ちましょう。
待っているのも勿体無いので、この状態ですが先に進みます。
ちなみに:別のリージョンでも有効化を試みるとエラーに
さらに別のリージョンでも有効化を試みるとエラーになりました。
A Capacity Manager is already enabled in ap-northeast-1. You can only enable Capacity Manager in one Region per account.
どこか一つのリージョンで有効化すればすべてのAWSリージョンの情報を集約してくれるとのことなので、複数のリージョンで有効化する必要はない(できないようにしている)ということでしょう。
有効化に伴い作成されるサービスリンクロール
EC2 Capacity Managerを有効化したことで、AWSServiceRoleForEC2CapacityManagerというサービスリンクロールが作成されました。
信頼ポリシーはこのようになっており、サービスプリンシパルにはec2.capacitymanager.amazonaws.com
が指定されています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.capacitymanager.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
アタッチされているAWS管理ポリシーAWSEC2CapacityManagerServiceRolePolicy
の内訳はこのような内容。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowOrganizationsDefaultReadActions",
"Effect": "Allow",
"Action": [
"organizations:ListAccounts",
"organizations:ListChildren",
"organizations:ListAWSServiceAccessForOrganization",
"organizations:DescribeOrganization"
],
"Resource": "*"
},
{
"Sid": "AllowOrganizationsListDelegatedAdministratorsAction",
"Effect": "Allow",
"Action": [
"organizations:ListDelegatedAdministrators"
],
"Resource": [
"*"
],
"Condition": {
"StringLikeIfExists": {
"organizations:ServicePrincipal": [
"ec2.capacitymanager.amazonaws.com"
]
}
}
}
]
}
Organizationsレベルで有効化した際にだけ使われそうな予感がします。
このサービスリンクロールがEC2やCloudWatchのAPIを裏で実行するわけではなく、EC2 Capacity Managerとしては裏でいい感じに情報を収集してくれているようです。
EC2 Capacity Managerの各種画面を確認してみた
Capacity Managerのコンソールでは以下のように複数のタブが切り替えられます。
- Dashboard
- 使用量(Usage)
- 予約(Reservations)
- スポット(Spot)
- Data exports
- Settings
初期セットアップ中の状態ではありますが、各画面の大枠を確認していきましょう。
Dashboardタブ
他のタブ(使用量、予約、スポット)の概要を一元的に表示できるタブです。
値が何も入っていないですが、枠としてはこんな感じ。
冒頭のブログより引用するとこのようなイメージ。
上部の日付フィルターで期間を指定することもできます。過去90日まで遡れそうです。(初期セットアップ時は過去14日まで。それ以降のデータを積み上げ?)
日付フィルターは他のいくつかのタブでも同じように使えます。
使用量(Usage)タブ
使用量が確認できるページです。
使用量は以下の単位で切り替えできます。
- vCPU(時間)
- インスタンス(時間)
- 見積もりコスト(割引を考慮しないオンデマンド時のコスト)
それぞれの単位について、いくつかの観点で統計を出してくれます。例えば以下があります。
- トータルの使用量
- キャパシティ予約の対象となったオンデマンドインスタンスの使用量
- キャパシティ予約の対象外であった使用量(スポット、オンデマンド)
- スポットインスタンスの使用量
冒頭のブログから引用すると以下のイメージです。
ここではvCPUの単位で表示されています。
インスタンスファミリーやインスタンスタイプといったディメンションでフィルタリングされています。
例えば「Unreserved usage」という列で、キャパシティ予約の対象でないオンデマンドインスタンスが一定数稼働していた、ということが読み取れます。
使用量タブでは、ディメンションフィルターとして以下が使用できます。
- Account
- Availability Zone
- Instance family
- Instance platform
- Instance type
- リージョン
- Reservation tenancy
予約(Reservations)タブ
先ほどの使用量タブが「稼働していたインスタンス」の視点であったのに対し、予約タブは「キャパシティ予約」の視点でのタブです。
こちらも単位は以下3つです。
- vCPU(時間)
- インスタンス(時間)
- 見積もりコスト(割引を考慮しないオンデマンド時のコスト)
これらの単位で、いくつかの観点で統計が表示できます。例えば以下があります。
- キャパシティ予約の総数
- 使用されたキャパシティ予約の量
- 使用されなかったキャパシティ予約の量
- 将来開始予定のキャパシティ予約の量
冒頭のブログから画像を引用すると以下のイメージ。
この画面から同じAWSアカウントのODCRの詳細情報も確認できます。ダッシュボード上から直接ODCRのパラメータを変更できるとのことです。
予約タブで使用できるディメンションは以下の通り。たくさんありますね。
- Account
- Availability Zone
- Instance family
- Instance platform
- Instance type
- Reservation ID
- Reservation instance match criteria
- State
- Reservation type
- リージョン
- Reservation tenancy
ディメンションとか統計の詳細を確認したい、という場合は以下のドキュメントを参考にしてください。
EC2 Capacity Manager metrics - Amazon Elastic Compute Cloud
スポット(Spot)タブ
スポットタブはスポットインスタンスの使用状況に関する詳細を示すタブです。
単位は切り替えできるものはありません。統計として、例えば以下のものが確認できます。
- 想定コスト
- 使用量(インスタンス時間)
- 中断までの平均時間
中身はないですが枠はこのような感じ。
ディメンションも3つだけなので、使用量タブや予約タブと比べるとシンプルな構成ですね。
Data exportsタブ
ダッシュボード上に現れている情報をS3にエクスポートできるタブです。
一覧画面では過去のエクスポート内容が見れそうです。エクスポートを実施する際は右上のボタンから実施します。
エクスポートする際は「名称」「フォーマット」「出力先S3 URI」「タグ」を指定することになるようです。
Settingsタブ
冒頭で見たSettingsタブです。
- Capacity Managerのステータス(有効か無効か)
- AWSアカウントID
- リージョン
- スコープ(アカウントレベルかOrganizationsレベルか)
- 初期セットアップのステータス
が確認できるほか、無効化する際もこのタブから行うようです。
有効化してから4時間以上経ったのですが、まだInitial-ingestion-in-progress
です。気長に待ちましょう。
終わりに
新しく登場したEC2 Capacity Managerの紹介でした。
ひとまず有効化して大枠が確認できるところまで確認してみました。具体的な使い方、活用方法は今後のDevelopersIOに任せたいと思います。
大規模にキャパシティ予約やスポットインスタンスを利用している環境で真価を発揮しそうです。利用料はかからないので、ひとまず有効化してどんな情報が取れるか確認してみると新たな発見があるかもしれません。
以上、チバユキ (@batchicchi)がお送りしました。