まえがき

cloudpackサポートの中村です。

「InsufficientInstanceCapacity」(インスタンスのキャパシティ不足)というエラーが表示され、EC2インスタンスが起動できません。
弊社サポートデスク宛に、お客様より上記のようなお問い合わせをいただくことがございます。

本記事ではEC2オンデマンドインスタンスで発生する「InsufficientInstanceCapacity」(キャパシティ不足)エラーの発生原因と対処方法を記載いたします。

キャパシティ不足エラーの発生原因

EC2オンデマンドインスタンスのキャパシティ不足エラーの発生原因として、AWS公式ドキュメントには以下の通り記載されております。[1]

《AWS公式ドキュメント抜粋》

現在、リクエストを完了するための十分なオンデマンド容量が AWS にない場合、次の InsufficientInstanceCapacity エラーが表示されます。

[1]AWS公式ドキュメント:EC2 インスタンスを開始または起動する際に発生する、InsufficientInstanceCapacity エラーのトラブルシューティング方法を教えてください。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-insufficient-capacity-errors/

つまり、EC2オンデマンドインスタンスの起動時に選択したアベイラビリティーゾーンにおいて、選択したインスタンスタイプのEC2オンデマンドインスタンスを起動するためのキャパシティ (AWSで管理している物理サーバーなどのファシリティの容量)が不足している状態です。
そのため、上記エラーが表示された場合はEC2オンデマンドインスタンスが一時的に起動できない状態です。

対処方法

EC2オンデマンドインスタンスのキャパシティ不足エラーに対する対処方法は下記AWS公式ドキュメントに記載がございます。[2]
本記事ではいくつかのパターン別に対処方法を紹介いたします。

[2]AWS公式ドキュメント:インスタンスの起動に関する問題のトラブルシューティング-インスタンス容量の不足
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/troubleshooting-launch.html#troubleshooting-launch-capacity

①緊急性が高いかつ構成変更を許容できる場合

・別のインスタンスタイプへ変更する/別のアベイラビリティーゾーンで起動する
→すぐにEC2を起動する必要がある場合は、別インスタンスタイプへ変更するもしくは別のアベイラビリティーゾーンで EC2オンデマンドインスタンスの起動を試してみてください。 ただし、この方法はシステムの構成変更が生じるため、構成変更を許容できない場合は 使用できません。

《AWS公式ドキュメント抜粋》

インスタンスを起動する場合は、アベイラビリティーゾーンを指定しないで新しいリクエストを送信します。
インスタンスを起動する場合は、別のインスタンスタイプを使用して新しいリクエストを送信します (これは後でサイズを変更できます)。
詳細については、「インスタンスタイプを変更する」を参照してください。

②緊急性が低い場合

・しばらく待ってから、再度EC2オンデマンドインスタンスの起動を試してみる
→AWSのキャパシティは頻繁に変化するため、すぐにEC2オンデマンドインスタンスを立ち上げなければならない状況でない場合は、
数分〜1時間程度待ってから、再度EC2オンデマンドインスタンスの起動を試してみてください。

《AWS公式ドキュメント抜粋》

数分間待ってからリクエストを再度送信します。容量は頻繁に変化します。

③複数C2オンデマンドインスタンスを同時に起動した際に発生している場合

・同時起動数を分割する

《AWS公式ドキュメント抜粋》

インスタンス数を減らして新しいリクエストを送信します。たとえば、15 インスタンスを起動する 1 つのリクエストを行っている場合、
代わりに 5 つのインスタンスに対する 3 つのリクエストを作成するか、
1 つのインスタンスに対する 15 のリクエストを作成してみてください。

④クラスタープレイスメントグループに所属するEC2オンデマンドインスタンスで発生している場合

・可能な限りクラスタープレイスメントグループ内で同じインスタンスタイプを使用する[3]
《AWS公式ドキュメント抜粋》

複数のインスタンスタイプをクラスタープレイスメントグループに起動できます。ただし、これにより起動に成功するために必要な容量が使用可能になる可能性が低くなります。
クラスタープレイスメントグループ内ですべてのインスタンスで同じインスタンスタイプを使用することをお勧めします。

[3]AWS公式ドキュメント:プレイスメントグループ – クラスタープレイスメントグループのルールと制限
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/placement-groups.html#placement-groups-limitations-cluster

オンデマンドキャパシティー予約を行いキャパシティ不足エラーを予防する

「オンデマンドキャパシティー予約」を行うことで、あらかじめ特定アベイラビリティーゾーンにおける
特定インスタンスタイプのEC2オンデマンドインスタンスを予約することができます。[4]

EC2オンデマンドインスタンスでビジネスクリティカルなワークロードを実行している場合は、
オンデマンドキャパシティー予約を利用して必要なキャパシティを確保しておくことをおすすめいたします。

[4]AWS公式ドキュメント:On-Demand Capacity Reservations
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-capacity-reservations.html

まとめ

EC2オンデマンドインスタンスのキャパシティ不足エラーはAWSのファシリティ状況に起因するため、AWS利用者では発生を予測できません。

そのためオンデマンドキャパシティー予約を実施しておくなど予防する。
万が一キャパシティ不足エラーが発生してしまった場合には本記事に記載の方法で対処して
キャパシティ不足エラー起因によるサービス停止を回避しましょう。