【AWS】EC2起動時に遭遇する「Insufficient capacity」エラーの原因と解決策


こんにちは!
クラウドソリューション開発部の大川です。

今回はAWS EC2でインスタンスを停止してから起動をしようとした際に稀に発生する「Insufficient capacity(リソース不足)」エラーについて、原因の仕組みと、安全に起動を保証する「キャパシティー予約」機能の活用方法をご紹介します。

EC2インスタンス起動時によくあるトラブル

運用コストを抑えるために、インスタンスを停止してインスタンスタイプやAZを変更することはよくあります。
しかし、インスタンスを起動する際に以下のようなエラーに遭遇した経験はありませんか?

インスタンス i-0b949xxxxxxxx の開始に失敗しました Insufficient capacity.

これはAWSの特定のアベイラビリティーゾーン(AZ)に十分な物理リソース(CPU、メモリなど)が確保されていない場合に表示されるエラーです。

こんな時に困る

  • サービス稼働開始直前でインスタンスが起動できない
  • 障害対応で緊急にインスタンスを再起動したいときに起動できない
  • 大規模イベントなどで大量のインスタンスを同時に起動する場合にリソース不足になる

こういったトラブルは、事前にキャパシティー予約をすることで安全に防げます。

EC2キャパシティー予約とは?

キャパシティー予約とは、特定のAZでEC2インスタンスの起動に必要なリソースをあらかじめ確保するAWSの仕組みです。
予約することで、指定したインスタンスタイプでの起動が保証されます。

EC2キャパシティー予約のメリット

キャパシティー予約をすることで得られる主なメリットは以下の通りです。

インスタンス起動の保証

キャパシティー予約をしていると、いつでも確実にインスタンスを起動できるため、計画的な運用が可能になります。

インフラの安定性向上

緊急時やピークタイムなどでもリソース不足に悩まされることがなく、インフラの安定稼働に貢献します。

フレキシブルな予約管理

予約はインスタンスタイプ、プラットフォーム、AZごとに柔軟に指定可能です。予約の作成や変更も簡単に行えるため、運用管理を効率化できます。

EC2キャパシティー予約のデメリット

一方で、キャパシティー予約には以下のようなデメリットも存在します。

コストがかかる

キャパシティー予約は、インスタンスが実際に稼働しているかどうかにかかわらず、リソースを確保している間は課金されます。
利用しないリソースに対しても料金が発生するため、長期間にわたって予約する場合、コストが高くなる傾向があります。

柔軟性の低下

一度予約をしたら、対象インスタンスのAZやタイプを変更する際には予約の取り直しが必要になるため、変更頻度が高い環境には不向きです。

費用面のポイント

キャパシティー予約の課金は以下のとおりです。

  • 起動しているインスタンスには、通常のオンデマンド料金が課金されます(キャパシティー予約の追加料金なし)。
  • 実際にインスタンスを起動していなくても、予約によってリソースを確保しているだけで、オンデマンド料金相当のコストが発生します。

そのため、予約を使うとコストが割高になる可能性があります。
一方、サービス停止リスクや再起動できないリスクを許容できないシーンでは、安心料として価値があります。

キャパシティー予約の設定方法(参考)

AWSマネジメントコンソールのEC2ダッシュボードから簡単に予約設定が可能です。

  • EC2ダッシュボード → 「キャパシティー予約」→「キャパシティー予約を作成」

  • インスタンスタイプ、インスタンス数、AZを指定して作成
    ※インスタンスの適格性は『ターゲットに設定済み』を選択することで、必要な時にリソースを確実に利用できます。

キャパシティー予約したものを停止済みのEC2インスタンスに適用する方法

  • EC2ダッシュボード → 「アクション」 →「インスタンスの設定」 → 「キャパシティー予約設定を変更」

  • 「キャパシティーの予約の設定」 → 「キャパシティーの予約の指定」
  • 「キャパシティーの予約」 → キャパシティー予約のIDを選択 → 「適用」
    ※既存インスタンスのインスタンスタイプはキャパシティー予約した時のインスタンスタイプと一致している必要があります。

  • EC2ダッシュボードから既存のインスタンスを選択 → 「インスタンスの状態」 → 「インスタンスを開始」

キャパシティー予約の解放

  • EC2ダッシュボード →「キャパシティー予約」→ 「アクション」 → 「キャンセル」
    ※ステータスがActiveのままだと課金が継続して行われるため、キャンセルをする必要があります。

まとめ

「Insufficient capacity」エラーは、EC2のリソース競合によって突発的に発生します。
キャパシティー予約を活用することで、このようなリスクを事前に排除し、サービスの安定運用を確保できます。

コストとのバランスを見極めながら、重要な環境に対しては積極的に導入を検討することをおすすめします。

終わりに

エコモットでは一緒にモノづくりをしていく仲間を募集中です!
弊社に少しでも興味がある方、ぜひ下記の採用ページをご覧ください!