【ハンズオン】EC2のオンデマンドキャパシティ予約を行う方法

# はじめに

AWSはクラウドなので、使いたいときに使いたいだけのリソースを使用できます。
とはいえ、AWSも物理リソースには限界があります。いざEC2を起動したいと思ったときに、キャパシティ不足で起動できないという可能性があるわけです。
そんなリスクに備える手段が **「オンデマンドキャパシティ予約」** になります。
これをあらかじめ行っておけば、リソース不足でEC2が起動できないといったリスクを回避することができます。

ただ、キャパシティを予約しておくということは、その分のリソースを確保しておくことなので、当然ながらお金がかかります。費用は**EC2をオンデマンドで起動しておくのと同等の金額**です。
EC2を起動していなくても料金はかかってしまうので、その点がデメリットです。

今回はスクリーンショットとともに、オンデマンドキャパシティ予約に実施方法を記します。
なお、AWS公式ページは[こちら](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html)にあります


# キャパシティ予約の実施手順

まずは[マネージメントコンソール](https://aws.amazon.com/jp/console/)にログインし、該当リージョンのEC2のページを開きます。
ここで **「キャパシティの予約」＞「キャパシティ予約の作成」** をクリックします。

![01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/f7ffecbc-e123-37c7-1ab2-4653dccb0934.jpeg)

### インスタンスの詳細

![02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/af646374-b426-382a-774b-6dfbddc55130.jpeg)


以下を選択します
- **インスタンスタイプ**
- **プラットフォーム(OS)**
- **アベイラビリティーゾーン(AZ)**
- テナンシー
- プレイスメントグループ
- **数量**

インスタンスタイプ、OS、AZなどが多様だと、それごとに設定しなくちゃいけないので結構面倒です。
テナンシーやプレイスメントグループを利用していなければそのままでOKです。

今回は、試しに「t3.nano」「Linux/UNIX」「ap-northeast-3a(大阪リージョン)」で「1台」としてみます。

### 予約の詳細

![03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/b390c336-7752-85cd-bbd4-6f1baff0315f.jpeg)

**「手動」** にすると、キャパシティ予約をキャンセルしない限りはずっと予約が維持されます。
**「特定の時間」** にすると、未来の日時を設定しておけば、そのタイミングで自動で予約がキャンセルされます。

また、インスタンスの利用資格に関して、**「一致する詳細を持つ任意のインスタンス」** を選択すると、「インスタンスの詳細」で設定したインスタイプ・OS・AZのEC2を起動した場合、自動的にキャパシティ予約の内数としてカウントされます。
**「この予約を指定するインスタンスのみを受け入れます。」** を選択すると、EC2を起動する際に、明示的に予約リソースグループのARNを指定する必要があります。

今回は「手動」、「一致する詳細を持つ任意のインスタンス」としてみます。

このまま **「作成」** を押すと確認画面が出てきますので、**「確認」** を押すとキャパシティ予約完了です。

![04.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/bcdfd02d-c1ff-7b9c-9acf-a62d790bfda8.jpeg)

### キャパシティ予約の確認

![05.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/2b77403f-782c-fb51-2d42-0b9eeb11c7c5.jpeg)


上記のように予約ができました。
利用可能が1インスタンスとなっています。

# EC2の起動

ここで該当するインスタンスタイプ・OS・AZでEC2を起動してみます。
キャパシティ予約の画面から **「インスタンスの起動」** をクリックしてウィザードを進めます。

![07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/3183da71-100b-77f5-9cda-294e0060cf38.jpeg)

そして起動しようとしたらエラー画面が出ました。
![error.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/51898dad-5d49-cc3d-ba80-8c081bbe7047.jpeg)

どうやら、t3.nanoを予約したのに、t2.microを起動しようとしてしまったみたいです。
このように、パラメータを間違えると起動できないようにしてくれます。

インスタンスタイプを修正したところ無事起動しました。
起動後のキャパシティ予約の画面は以下のとおりです。
ちゃんと起動が1インスタンスとなり、利用可能は0インスタンスに減っています。

![06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/d7c8149f-4254-588d-ec9f-645412f90e77.jpeg)

# 予約のキャンセル

キャパシティ予約をしたままだと料金がかかってしまうので不要であればキャンセルしましょう。
**「予約をキャンセル」** をクリックします。

![game.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/56ec84ae-c67c-61f1-fc3e-dca276f19ce6.jpeg)

確認画面が出ますので **「予約をキャンセル」** をクリックします。
これでキャパシティ予約が解放され、料金がかからない状態にできます。

![08.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/272753/88a1bcb1-784b-3ee9-81f4-e87ceb72b29b.jpeg)

# さいごに

今回はマネージメントコンソールからEC2のオンデマンドキャパシティ予約をする手順を紹介しました。
AWS CLIから実施する手順は[こちら](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/capacity-reservations-using.html)に載ってますのでチェックしてみてください。